Colophon

Built with Astro and Tailwind CSS v4, written in TypeScript, and compiled to plain static HTML. There is no server, no database and no CMS. Content lives in markdown files with type-checked front-matter, so a typo in a date fails the build instead of shipping.

Type is Ledger — a slab serif — for headings, andFigtree for everything else, both self-hosted: no third-party font request, no layout shift while a webfont decides to arrive. Colour is ten hues, each with eleven steps, running cool to warm across the grid in spectrum order. Every tile picks one hue; the page it opens inherits it, so the whole section stays that colour.

Motion is limited to compositor-friendly properties (transform andopacity), and all of it is switched off underprefers-reduced-motion.

It's served by an nginx container out of aCloudflare Tunnel, running on a machine in my house. My router has no ports open — the tunnel is an outbound connection from my PC to Cloudflare's edge, and visitor traffic comes back down the same pipe. TLS is terminated at the edge, so there's no certificate for me to renew. More on the box itself in thehomelab.

The design started as a static mockup — a grid of even tiles, no breakpoints, one fluid auto-fill rule that lands on four, three or two columns by itself. That constraint survived into the build, which is why you won't find a media query doing layout anywhere in the stylesheet.

Back to the grid