This is the first test post on wrunk.dev. The site is built with a simple static site generator: markdown files with YAML frontmatter get rendered to static HTML at build time.
How It Works #
Each page is a directory with an index.md or index.html file. The build process:
- Parses YAML frontmatter for metadata (title, date, tags, etc.)
- Renders markdown to HTML
- Injects the result into the site template
- Writes static HTML to the
build/directory
Why This Approach #
No framework, no JavaScript build step, no dependencies beyond our own Go markdown parser. Pages load fast, deploy anywhere, and the content is just plain markdown files in the repo.
The best tool is the one you understand completely.
I totally didn’t farm this entire project out to claude
Modern CloudFlare hosting! #
This site lives entirely on Cloudflare in 2026. No GCS, no S3, no "free tier" that quietly bills you $3/mo for a database you forgot to delete.
- Cloudflare Workers Static Assets — point it at a
build/directory, runwrangler deploy, done. Zero JavaScript required for pure static sites, though I ended up writing 11 lines of it anyway (see below). - Free tier that’s actually free — asset requests are exempt from the 100k/day Worker limit. Unmetered bandwidth, zero egress fees. If you can get bigger than that, congrats, you’re bigger than my blog.
- Custom domains in
wrangler.toml—wrunk.devandwww.wrunk.devdeclared as routes, Cloudflare provisions the TLS cert automatically, DNS records auto-created. No Search Console verification dance, noc.storage.googleapis.comorigin-TLS hack, no load balancer at $18/mo just to get a cert. - One-command deploys —
foff blog-deploybuilds the site and ships it. The foff CLI reads the Cloudflare token from~/lib/cloudflare-key.txt, so I can stop pretending I’ll remember environment variables. - www → apex redirect — since Workers Static Assets can’t redirect by itself, there’s a ~10 line worker script that checks the hostname and 301s
www.wrunk.devtowrunk.dev. Everything else falls through to the static assets binding. I briefly considered using a Cloudflare Redirect Rule instead, but that would’ve required another API token permission and configuration that lives only in the dashboard. No thanks. - Total monthly cost: $0.00 — and that includes the domain, which I already paid for separately, so it doesn’t count.
The whole setup is ~25 lines of config and one small JS file. After years of Kubernetes YAML, this felt suspicious.