Skip to content
For developers

Take the code

Everything on the Atlas is one repository: the site, every project bundled under it, and the data files behind the research. This page is the map. How it fits together, where each project's source sits, and which parts are yours to take.

Open by default.

Architecture

How it's built

One Next.js app hosts a set of smaller, self-contained apps. Each was written in whatever suited it.

The host

01

A Next.js 15 app in src/. The homepage, the feed, the reports, the glossary, the contact form, the editor gate.

src/app · Next.js 15 · React 19 · TypeScript

The sub-apps

02

Each project is its own app in a top-level directory with its own package.json and its own framework. On every deploy they are compiled straight into public/ and served as static bundles. The built output is never committed, so two people can't overwrite each other's build. A few have no build step at all: hand-authored HTML, CSS and JavaScript, committed whole. Interference is fifteen fragment shaders and a file that runs them, and that's genuinely the entire source.

scripts/build-subapps.sh · Vite, Next static export, or committed as-is

Repository

One repository

The site and every project bundled under it live in a single repo. Clone it, run it, take the parts the licence gives you.

Public repository

futures-atlas-02

The host app, every project's source, the research data files, the build scripts and the committed static bundles. If something is on the Atlas, it is in here.

github.com/ether-hill/futures-atlas-02
Never committed

Keys and builds

Every environment file, every built sub-app bundle and the generated footer are git-ignored. No key or password has ever been in the tree, so a clone is safe to run and safe to fork.

Source index

Where each project lives

Every project below links to the exact folder it is built from. The three build kinds behave differently, so the tag tells you what you are getting into before you clone: a directory you can npm install and run, or a bundle you can just open.

/interactive-quantum-interference

No source recorded yet.

/futures-in-figures

No source recorded yet.

No source recorded yet.

/interference

Committed static bundle

github.com/ether-hill/futures-atlas-02/public/interference/
WebGL2GLSLVanilla JS

Fifteen fragment shaders and one shared field.js, used by both the gallery and the embeddable player. No build step: the shaders are the source.

/quantum-spark

Built on deploy

github.com/ether-hill/futures-atlas-02/quantum-spark/
Next.jsReactTypeScript

Same split as Signal Reactor: the page is static, /api/quantum-spark in the host app does the generating.

/signal-reactor

Built on deploy

github.com/ether-hill/futures-atlas-02/signal-reactor/
Next.jsReactTypeScript

Static export on the front, but its generation endpoint runs in the host app at /api/signal-reactor, so this one needs a key to run fully.

/swipe-the-future

Built on deploy

/generatives

Built on deploy

github.com/ether-hill/futures-atlas-02/generatives/
ViteThree.jsTypeScript

A dashboard plus a separate embed.html player, so a single generative can be dropped into someone else's page.

Getting started

Run it yourself

The host app and every sub-app build from a single clone. Node 20 or newer; the sub-app builds are skipped unless their source has changed, so the first run is slow and the rest are not.

git clone https://github.com/ether-hill/futures-atlas-02.git

One repo. The design system comes with it, vendored at packages/futures-atlas-core.

npm install

Installs the host app only. Each sub-app installs its own dependencies when it builds.

npm run dev

The host app on :3000. Sub-app routes 404 until you build them at least once.

npm run build:subapps

Compiles every sub-app into public/. Slow the first time, then it skips anything unchanged.

Nothing above needs a secret. The environment variables the deployed site uses (the theming store, the editor sign-in, the two generation endpoints) are all optional and degrade gracefully: without them the theme falls back to its defaults, the gated routes stay closed, and Signal Reactor and Quantum Spark render but cannot generate.

Licence

What you may do with it

There are three kinds of material here and they carry three different permissions. Find the one that covers what you want.

Project code

MIT

The published projects: the interactive pieces, the simulations, the visualisations, the games. Use them commercially, fork them, ship them. Keep the copyright notice and you have met the whole obligation.

Research & data

CC BY 4.0

Reports, findings, the evidence behind them, the glossary and the datasets. Cite it, republish it, argue with it. Credit the Atlas and link back.

Third-party assets

Their own terms

Fonts under the SIL Open Font License, and the Wikimedia portraits in Hypothetica Magnifica under their individual CC licences. We pass those along rather than relicensing them, so check the credit before you reuse one.

What you make with it

If you forked something, wired a component into your own work, or used a prototype in a workshop or a classroom, we would like to hear how it went. Bug reports and pull requests are welcome on GitHub; anything longer is better as a message.

Get in touch