This site is a static Astro build on GitHub Pages: typed content collections, a few React islands for what genuinely needs to run in your browser, and Tailwind CSS mapped onto design tokens. The repo is the source of truth — the pipeline type-checks, tests, and runs accessibility checks before anything ships.
Stack
Astro for static HTML and content collections, React only for interactive islands (the Lab tools and protected content), Tailwind CSS 4 over CSS custom properties, Vitest and Playwright for tests, and GitHub Actions for deploys.
Type and theme
Switzer for display and text, IBM Plex Mono for labels and code. Light-first, with resilient light and dark themes driven by tokens, keyboard navigation, and semantic landmarks.
Inspiration
The density and near-square, grid-first feel borrow from IBM's Carbon Design System; the typographic hierarchy leans on editorial layouts. The goal is a developer's workbench, not a marketing page.
How records are classified
Every record carries three separate statuses. Visibility says whether it is published at all. Write-up (maturity) says how finished the text is: seed, growing, stable, or archived. Lifecycle says what state the thing itself is in — a note is current, superseded by a newer one, or archived; a project or Lab entry moves from prototype to stable or shipped, and may be archived. A stable tool can have an early write-up, so the two are never merged.
Privacy
The Lab tools run entirely in your browser — no input you type is sent anywhere. Protected content uses client-side encryption as a deterrent, not authorization. The one exception to "no third parties" is Google Analytics, which records which pages are read; consent mode denies advertising storage, so it measures the archive, not you.