63 lines
2.1 KiB
Markdown
63 lines
2.1 KiB
Markdown
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 = [[
|
|
<div class="tile"> ... </div>
|
|
]]
|
|
|
|
```
|
|
|
|
## Ideas
|
|
|
|
* 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.
|