Static by conviction.
The whole site is Astro, built to plain static HTML and served from Cloudflare's edge. Every page is real, crawlable markup that works with JavaScript switched off — the animation, the map, the music all layer on top, never underneath. Two small serverless Functions do the only server-side work on the site: the "ask the map" guide and the live Spotify demo's fetcher. That's it. Nothing else needs a server, so nothing else can fall over.
A strict front door.
There's a locked-down Content-Security-Policy with Trusted Types: the browser refuses to run any script the site didn't ship, and the usual tricks for turning text into live HTML simply throw. It's the unglamorous security layer I keep going on about, pointed at my own work first — every interactive piece is built out of real DOM nodes rather than strings, because the policy gives me no other choice. I consider that a feature.
Fonts that hold still.
Newsreader for reading, IBM Plex Mono for the small print — both self-hosted through Astro's Fonts API, which generates metric-matched fallback fonts so the page doesn't lurch as the real ones load. No third-party font CDN, no layout shift, no flash of the wrong thing.
A world on top of the pages.
Each route is graded like one film across scenes — its own "district" with its own light. There's a small constellation map of the site, a Spotify preview radio that paints the page with a track's colours, and an "ask the map" guide that only ever points you at pages that actually exist. All of it is progressive: turn motion off, or JavaScript off, and you get the calm, fast, fully readable version — intact, not broken.
Git is the CMS.
The words live in Markdown, in version control. Publishing is a commit; there's no admin panel to log into, nothing to keep patched, and every change carries its own history. For a site that's partly about trusting what software produces, an editable database in the middle felt like the wrong kind of magic. A diff is the honest version.
Measured, never rounded up.
The numbers you see — stars, reputation, answers — are fetched at build time and shown as-is. The performance budget is just as plain: fast everywhere, layout that doesn't jump, and a page that still behaves on a phone with a weak signal. If something here is slow or shifts, that's a bug, not a trade-off I made on purpose.