Colophon
Foundation
This site is a personal digital garden built with Next.js 16 (App Router) and TypeScript. Content lives in Sanity and is pulled in at build-time with GROQ queries. The code is kept in a GitHub repository and deployed to Netlify.
Content model
The garden is organized into a few main content types in Sanity:
- Notes – short thoughts, ideas, and experiments.
- Weekly recaps – one entry per week, indexed by year and week number (e.g.
2025 – Week #47). - Letters – long-form writing addressed to Dove and Elle.
- Reading log – book reviews with ratings, key takeaways, and a simple “buy” link.
All rich text is stored as Portable Text and rendered on the site with custom components that preserve paragraphs and basic formatting.
Design & layout
The layout is intentionally minimal: a narrow column, plenty of spacing, and almost no traditional navigation. Most of the styling is done with Tailwind CSS, using a dark background with muted grays for body text and slightly brighter accents for links and labels.
Typography pairs a monospaced feel for headings with a more readable sans-serif for long-form text. The goal is to feel like a developer notebook and a personal journal at the same time.
Navigation is deliberately constrained: aside from the home page, each page exposes a single Back button that lets you move backward through your path instead of jumping around via a global header. It's meant to feel more like walking a path than using an app.
Editing & tooling
Content is edited in Sanity Studio, running as a separate local instance during writing sessions. The Next.js app pulls from the same project ID and dataset and uses ISR (incremental static regeneration) to keep pages reasonably fresh without giving up on static builds.
Deploys are triggered automatically from pushes to the main branch. Netlify handles builds, environment variables, and serving the production bundle.
Philosophy
This garden is designed to change over time. Some notes will stay half-formed, some weeks will be thin, some letters will be heavy. That's intentional. The goal isn't to maintain a polished archive, but to leave a visible trail of thinking, reading, and living across years.