I added a blog to this site. It is markdown files, one build script, and one dependency.

There's no framework here. No static site generator, no React, no CI build step. The homepage is one hand-written index.html, and now each post is a markdown file rendered to its own HTML page by a build script small enough to read in one sitting. Digital Ocean deploys main on push. That's the whole pipeline.

Why bother staying this small

Every generator-based site I have maintained eventually broke on a transitive dependency. The scaffolding broke under a site that never changed.

So I set one rule: any agent should be able to run the build from the contribution guide alone, on a stock machine, after a single dependency install. The only dependency is a markdown parser. If a feature can't justify a second one, it doesn't get added.

How a post gets published

  1. Write a markdown file in posts/ with a title and date.
  2. Run the build. It renders the post and regenerates the index.
  3. Push to main. Digital Ocean deploys it.

Because the rendered HTML lives in the repo, search engines get real pages and readers get no client-side rendering delay. The theme toggle, dark and light, is the same CSS-variable system the homepage already used, so posts inherit it for free.

The full pipeline is written up in the contribution guide, and the decision to skip a static site generator is recorded in ADR 0001.

That's it. A blog that's just files, and a build I can hand to anyone.