Bring your own little world

SceneXP is open source under the MIT license, and new experiences are warmly welcomed through GitHub pull requests. If there is a person you would like to honor, or a business you would like to bring to life as a small 3D world, this page will get you building.

How the project is put together

There is no framework and no build step beyond minification. Each experience is a static folder of browser-native HTML, CSS, and JavaScript, powered by Three.js.

  • One folder per experience. Every experience lives in its own folder under www/, like www/dad, www/family, and www/roqui, with its own index.html, styles, config, and orchestrator.
  • A shared parts library. www/shared/js holds versioned, general-purpose modules (scene, lighting, controls, people, scenery, and more). An experience keeps its own main.js orchestrator and assembles imported parts driven by one plain config object.
  • Three.js as a global. Each experience's index.html loads lib/three.min.js as a classic script before its module graph.
  • Grunt for minification. npm run grunt minifies JS and CSS. New files need their paths added to the main Gruntfile.js.

Run it locally

ES modules need to be served over HTTP, so run any static server from the www folder:

cd www
python3 -m http.server 8000
# then open http://localhost:8000

Add your experience, step by step

  1. Fork the repository on GitHub and clone your fork.
  2. Create your folder, for example www/your-world/. The existing experiences are the best reference: start from their structure with an index.html, a js/config.js describing your world, and a js/main.js orchestrator that assembles parts from www/shared/js.
  3. Follow the metadata pattern. Every experience page carries a strict same-origin Content Security Policy, full Open Graph and Twitter tags, JSON-LD, and a polite no-JavaScript fallback. Copy the pattern from an existing experience.
  4. Wire up the build. Add your new JS and CSS paths to Gruntfile.js, run npm run grunt, and run npm test.
  5. Add your world to the directory. One card in www/index.html, one entry in www/js/directory.js, and one URL in www/sitemap.xml.
  6. Open a pull request telling us the story behind your world. We read every one with genuine delight.

House rules

  • Honor someone. Every experience celebrates a person, place, or business. Kind worlds only, please.
  • Security first. Same-origin CSP, no third-party scripts, no trackers, no CDNs. Everything ships from this domain.
  • Accessible and considerate. Keyboard support, reduced-motion respect, and a no-JavaScript fallback are part of the pattern, not extras.
  • Fast on phones. Many visitors arrive on mobile, so please keep assets lean and performance in mind.
  • MIT licensed. Your contribution is published under the project's MIT license. The bundled three.min.js keeps its own license.

Ready when you are

The public GitHub repository is coming soon. The site launched first, and the source code follows shortly. If you would like a nudge the moment the repository opens, or you simply cannot wait to start building, please reach out and we will figure it out together.