A place to write, document projects, and keep a record of things worth sharing. The design takes typography and the reading experience seriously — more so than most personal sites bother to.
Stack§
Built with Next.js 16 using the App Router and Turbopack, exported as fully static HTML — no server, no database. Content lives as MDX files in a content/ directory, rendered at build time via next-mdx-remote/rsc. Styling is Tailwind v4 with a layer of custom CSS for the typographic details.
Typography§
Body text is set in EB Garamond, a digital revival of Claude Garamond's sixteenth-century typefaces — unhurried, with the rhythm of something meant to be read at length. Page and post titles are set in UnifrakturCook, a bold blackletter face. Section headings within posts use Playfair Display, a high-contrast transitional serif. Drop capitals at the opening of each post are set in Cherubic Initials, an ornamental display face.
The root font size scales fluidly with viewport width — everything defined in rem grows proportionally, so the layout feels consistent at any screen size without breakpoint juggling.
Design§
The palette is monochrome: near-black backgrounds with grey text in dark mode, and the inverse in light. There are three themes, switched from the pill control at the bottom of the sidebar — a sun for light, a crescent for dark, and a rainbow for colour mode.
Colour mode applies a per-post accent colour throughout the page: drop caps are tinted and glow, the page title and all section headings pick up the same hue, ornamental dividers match, and the active item in the sidebar follows. The colour is derived deterministically from the post slug, so it is stable across visits.
Other details:
- Sidenotes — marginal notes that float beside the text on wide screens and collapse to toggleable inline notes on narrow ones.
- Table of contents — floated to the right of the prose on wide layouts, hidden on small screens.
- Ornamental dividers — horizontal rules render as
✦ ✦ ✦rather than a line. - Tags — posts can be tagged and browsed by tag from the Tags page.
- Search — press
Ctrl K(orCmd Kon Mac) to open the search modal, which searches across all posts and pages by title, description, tags, and body text. - Mobile — on small screens the sidebar collapses to an off-canvas drawer opened from the top bar.
Why Static§
No CMS, no database, no server. The whole site builds to a folder of HTML files that can be served from anywhere — fast, cheap to host, and easy to reason about. The source of truth is a git repository full of text files. Nothing to migrate, nothing to go stale.