Every post on this blog starts as a branch. When I’m ready to publish, I open a PR, the CI pipeline runs, and if everything passes — build, Lighthouse audit, link checks — it merges to main and Netlify deploys it automatically.

This might sound like overkill for a personal blog. It probably is. But I wanted a workflow that enforced quality without requiring me to think about it. The branch-per-post pattern means I can have multiple drafts in progress without any of them touching production until they’re ready.

The pipeline itself is straightforward: GitHub Actions runs the Astro build, checks for broken links, and runs Lighthouse CI against the Netlify deploy preview. If any check fails, the PR stays open. No exceptions, even for my own posts.