Files
2026-04-29 10:06:47 +02:00
..
2026-03-23 11:16:30 +01:00
2026-04-29 10:06:47 +02:00
2026-03-23 11:16:30 +01:00
2026-04-29 09:57:45 +02:00

User / Player

Visit any instance using your WebXR compatible VR headset. If you are insure you can start from the test instance https://biggu.benetou.fr

Guardian / Parent / Teacher

As users visit https://biggu.benetou.fr ideally on your VR headset.

Administrator / Developer

You can tinker with the instance listed above. Consider setting up your own by cloning this repository then either

  • directly starting the service using
    • npm i # install backend dependencies
    • npm run generate_certificate # generate self-signed certificates for local testing only
    • npm run get_and_install_assets # get assets, e.g. 3D models of hands, animated model and frontend dependencies
    • npm run start # start the backend
    • follow instructions from the terminal (typically open http://localhost:8080 but be mindful of other instructions)
    • try npm run [TAB] for more helpful commands, e.g. server_and_domain_test and server_test
    • to enable HTTPS for local testing in XR using HTTPS=true npm start
  • relying on a container with the provided Dockerfile
    • same process but within a container

This is highly experimental so please read through #20 and if you want to federate, between your own instances or the test one also go through #21

Opening https://localhost:8080/commands should give you a JSON. You might have to rewrite paths manually or via your reverse proxy.

Setup for fully offline workshop

Once you have cloned the repository 2 steps are expected to be done online, namely

  • npm i
  • npm run get_and_install_assets

You can also do so manually by

  • copying the node_module directory of a working setup to the project root directory
  • download assets https://biggu.benetou.fr/assets.tar then unpacking them in the pages/ directory

Before running the workshop it is strongly recommended to do a mock test with the browser console open. You can then inspect via the networking tab that all content, in particular dynamically loaded assets, do genuinely originate from your configured device. This is crucial as once the workshop starts and is offline anything else will be unavailable and might break content.

Running behind a reverse proxy

This is the expected way. The certificate is then handled by the reverse proxy.

nginx example

server {
        server_name biggu.benetou.fr; # managed by Certbot
        client_max_body_size 10M; # important for screenshots, 3D model uploads, etc
        add_header 'Access-Control-Allow-Origin' '*' always; # suggested for easier federation but consider limiting only to trusted instances

        location / {
                proxy_pass http://localhost:8080;
        }

    listen 443 ssl; # managed by Certbot
    # ... # managed by Certbot
}

SSL Certificates for HTTPS

  • self-signed certificate that you can generate (npm run generate_certificates) but it is not recommended because it will not work in XR and some part of federation will fail due to insecure certificate, this is only for testing or offline workshop
  • reverse proxy which handles the certificate (typically certbot for LetsEncrypt) which is the recommended way, except for offline workshops

Building a custom client

Refer to the API documented at #55

It is recommended to first build a console client (i.e. testing via fetch() in the browser console) then an XR client once this is validated.

Contributor

Note that due to the risk of spam this repository is closed to external contributor. If you want to contribute you are invited to clone this repository, modify whatever you want then contact https://git.benetou.fr/utopiah via email or otherwise to discuss. I would happily create an account for you on this instance after.

Consider also that the core of this project is remixing directly in XR. Everything else might be important but remains secondary.