This blog starts with a deliberately small stack: Astro for content, MDX for writing, and Cloudflare Workers Static Assets for delivery.
The default rule is simple: publish pages as static assets first. Dynamic code can wait until there is a concrete reason to pay the complexity tax.
Why this shape
- Posts live in the repo, so a normal code review can catch broken links and metadata.
- Astro Content Collections validate frontmatter before deploy.
- Workers gives the project room to grow into small APIs later without changing domains.
const defaultMode = "static-first";
const domain = "blog.badgerworks.dev";
The result should feel boring in the best way: fast pages, plain files, and deployment commands that fit in muscle memory.