Colophon
How this site is built: the stack, the tooling, and the decisions behind it.
A record of what the site runs on, and why each piece is here.
[ intent ]What this is
A personal site that stays out of its own way: fast to read, quiet to look at, and honest about how it works. Anything that can't earn the bytes it costs is left out.
[ stack ]The stack
The load-bearing pieces, each earning its place rather than its hype.
- Next.js 16App Router on Turbopack; server components by default, client only where it's earned
- React 19the rendering layer, kept boring on purpose
- TypeScripttypes as the cheapest tests I'll ever write
- Tailwind v4utility-first styling with tokens in src/styles, no stray hex
- base-uiaccessible primitives for popovers, collapsibles, and the fiddly bits
- MDXblog posts as components when prose isn't enough
- motion (Framer)animation, used sparingly and always behind prefers-reduced-motion
- jotaiatomic state for the few things that genuinely need it
- next-themesdark mode without the flash-of-wrong-theme
- Geist fontssans, mono, and pixel-square from one family
- hugeiconsthe icon set, free tier, tree-shaken
- shikibuild-time syntax highlighting so code blocks ship as plain HTML
[ type ]Typography
Three weights from the Geist family: Geist Sans for reading, Geist Mono for the technical labels, and Geist Pixel Square for the headings.
Geist Sans carries the reading.
Geist Mono [ the technical labels ]
Geist Pixel Square
[ principles ]Design principles
Minimal, static-first, and dark-mode-first. Stable content is inlined at build time (no runtime calls to third-party APIs for things that don't change), so pages render instantly whether or not the network cooperates. Most of the work is in the CSS, not the dependency list.
[ tooling ]Tooling & infra
Bun runs and bundles, ESLint and Prettier keep me honest, and Playwright catches the regressions I'd otherwise ship at 2am.
- Bunpackage manager and runtime
- ESLintlinting via eslint-config-next
- Prettierformatting, with the Tailwind class-sorting plugin
- Playwrightend-to-end tests in tests/
- GitHubAvaterClasher/www-v1, public and MIT-licensed
[ thanks ]Credits & inspiration
This site stands on open-source primitives: base-ui, motion, hugeicons, shiki, and the Next.js and React teams who do the unglamorous work so this site can be small.