How this was built.
The design system and the build are both mine. No template, no page builder, no agency — the tokens, the components, the copy and the deploy.
02Stack
What it runs on.
Next.js 15, React 19, TypeScript
App Router, server components, server actions.
Supabase
Postgres for editable copy and page metadata, with row level security.
Vercel
Deploys on push to main.
Plain CSS
Custom properties and semantic pattern classes. No utility framework.
03Typefaces
Three faces, all self-hosted.
| Face | Role | Licence |
|---|---|---|
| Manrope | The default voice — body, navigation, UI, most headings | OFL |
| Petrona | The scarce editorial register — one italic phrase, pull quotes | OFL |
| Pecita | Pen annotations, two to eight words | OFL |
All three ship under the SIL Open Font Licence, with each licence file served beside the font it covers. Converted to WOFF2 locally; nothing loads from a CDN.
04Material
The canvas.
Every surface carries a woven painter's canvas over an exact Margin Blue base. The image supplies texture and luminance only — the base colour sits underneath as a deterministic fill, so the blue never shifts. It runs at twelve percent behind the hero, eight on reading pages, and sixteen on ink fields, where it lifts rather than muddies.