How this site is built
I write here about keeping software boring and legible, so it would be strange not to say how this one works. There is not much to it, which is the point.
- Framework
- Nuxt 4, prerendered to static HTML
- Hosting
- Cloudflare Pages
- Content
- Markdown in the repo
- Styling
- Tailwind CSS
- Type
- Geist and Geist Mono
- Runtime
- Node 20
No CMS, no database
Every essay is a markdown file in the repository. Projects, bookmarks and the rest are plain JavaScript objects in a static/ folder. Nothing to log into, nothing to migrate, and nothing that can go down on its own. Publishing is writing a file and pushing it.
Every page is also readable as plain markdown: add .md to any URL. There is an llms.txt and a small MCP server for anything reading this without a browser.
Why build it this way?
Because I have spent years shipping into systems that were already live and could not be taken down to be fixed, and the habit sticks. A site with no database has no database to restore. A page that is a file cannot half render. If something breaks, it breaks at build time, in front of me, rather than in front of a reader.
The one place I have not followed my own advice is measurement: the analytics are heavier than I would like, and the privacy policy is specific about what loads and when.
Building something where this kind of work matters?
I'm in GMT+6 and work async-first, so your timezone is never a reason not to reach out.
Get in touch