NOTES: ``` /admin.lua <--- define other instances..for CORS allow / mount http configure in-zip or filesystem-cache opendirectory.lua <--- mount other instances over http (via xrforge or rclone) .xrforge/hook/scandir <-- event to hook scan files ---------- middleware/xrexperience.lua | events: --------------------- + file type: sidecarfile + sidecarfiles ---> regex = {"\.glb", "\.png", "\.vtt"} | regex_minmatch = 2 + folder viewer = /view/janusweb/#janus.url=${file}.glb template = [[
...
]] ``` ## Ideas * tabs horizontal stacked for xrforge.max.css * fuzzy search: https://github.com/ssimonp/FuzzySearch-Roblox * landingpage = /about * scan functions in xrforge.lua / .xrforge * video-hover: https://codepen.io/coderofsalvation/pen/YPNOyqx ## Scan manyfold ------------- ``` manual scan (via cli?) curl -L -X 'GET' 'http://xrforge.isvery.ninja/models?page=1&order=name' -H 'accept: application/vnd.manyfold.v0+json' curl -L -X 'GET' 'http://xrforge.isvery.ninja/models?page=1&order=recent' -H 'accept: application/vnd.manyfold.v0+json' ``` ## Developing ```bash $ source .env # not needed if your system has autoenv $ build # fast: repeatable build $ rebuild # faster: lua-repeatable build $ nix-build # slow: reproducable nix build (for experts) ``` Then run with debug flag to see output of `trace()` calls ```bash $ DEBUG=1 result/bin/xrforge.com ``` ## Permacomputing Spirit * developed on [Dillo](https://dillo-browser.github.io/) as lowest common denominator / compatibility * does not use javascript (WebXR viewer being the exception) * gracefully degrades to admin/filebrowser for >noscript>/potato-browsers * server is using lua-scripting via cosmopolitan libc's [redbean](https://redbean.dev) > So yes, the codebase/html/css is intentionally 90-ish: that's **exactly why it works** on potato-devices AND modern devices.