Writing Essay

Web Development · 2 min read

Why I Built a Static Blog

A personal blog should be fast on a phone and boring to host — Markdown to static HTML on Cloudflare, no app server.

In this article3 sections

Looking back This describes the 2025 Bunki build. The site now uses Astro; the code and tooling choices below document that earlier implementation.

Most people who read this will open it on a phone between other apps. If the page is heavy, they leave. That is the whole product requirement.

What I Run

Markdown files, a small generator (TypeScript, Nunjucks templates, PostCSS), static HTML out the other side. Hosting is Cloudflare. No Node process sitting around waiting for requests.

I used Claude Code heavily while building the pipeline. The stack choice was still mine: I wanted deploy to be “push and forget,” not “hope the server is up.”

The dependency list is boring on purpose — parse frontmatter, render Markdown, highlight code, ship CSS. If a library does not earn its install, it does not stay.

Deploy

Write a post, push to git, CI builds the site, Cloudflare serves the files from the edge. Readers get HTML from a nearby PoP. I do not SSH in to restart anything when traffic spikes, because there is nothing to restart.

What I Skipped

No Next.js for the blog. I have paid that tax on app work — routing frameworks, serverless cold starts, EMFILE limits on hobby plans. A blog does not need that surface area.

beconfused.com and yorksf.com run the same way. I can reuse the monorepo patterns and edge hosting without making each site share a runtime.

Was this useful?

What was missing?

Thanks for the feedback.