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/, likewww/dad,www/family, andwww/roqui, with its ownindex.html, styles, config, and orchestrator. - A shared parts library.
www/shared/jsholds versioned, general-purpose modules (scene, lighting, controls, people, scenery, and more). An experience keeps its ownmain.jsorchestrator and assembles imported parts driven by one plain config object. - Three.js as a global. Each experience's
index.htmlloadslib/three.min.jsas a classic script before its module graph. - Grunt for minification.
npm run gruntminifies JS and CSS. New files need their paths added to the mainGruntfile.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
- Fork the repository on GitHub and clone your fork.
- Create your folder, for example
www/your-world/. The existing experiences are the best reference: start from their structure with anindex.html, ajs/config.jsdescribing your world, and ajs/main.jsorchestrator that assembles parts fromwww/shared/js. - 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.
- Wire up the build. Add your new JS and CSS paths to
Gruntfile.js, runnpm run grunt, and runnpm test. - Add your world to the directory. One card in
www/index.html, one entry inwww/js/directory.js, and one URL inwww/sitemap.xml. - 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.jskeeps 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.