How I chose this stack
If you’re an engineer building a personal site in 2026 and you want it still standing (and still editable) in five years, the short answer is: build it on Astro, host it on Cloudflare Pages, keep your writing as Markdown in Git, and treat AI answer engines as a first-class reader from day one. That’s what this site runs on. Here’s the reasoning, because I don’t take defaults on faith.
Why not just use the default?
The reflexive default is Next.js on Vercel. For an app, fine. For a site whose whole job is words, it’s the wrong tool: it ships a React runtime the content doesn’t need, and it quietly couples your hosting bill to a metered platform. “Everyone uses it” is not an argument. It’s the absence of one. A personal site is exactly the place to refuse the default and pick what actually fits the work.
What actually matters for a writing-first site
Strip away the hype and four things matter:
- Durability: will this thing, and my words, survive the next five years of churn?
- Cost resilience: what happens to the bill the day a post catches fire?
- Crawlability: can both Google and the new answer engines actually read it?
- Ownership: if a vendor changes the terms, how trapped am I?
Everything below is downstream of those.
Why Astro
Astro is static-first with “islands”: it pre-renders to HTML and only hydrates the rare interactive bit. For a blog, that means the reader gets clean HTML and almost no JavaScript, which is the best posture for speed and for crawlers that don’t run JS. Its content collections give me typed, schema-validated Markdown, so a malformed post fails at build instead of in production.
And the longevity worry (“is this framework funded?”, the question that quietly killed Gatsby) got answered in January 2026 when Cloudflare acquired Astro. Astro was already the most-retained meta-framework in the State of JS 2024 survey (~94%); now it has a serious backer with an obvious incentive to keep it healthy. I’ll take a current-meta bet when the fundamentals underneath it are sound.
Why Cloudflare Pages
This is the one that isn’t really debatable for a personal site: unlimited bandwidth. The failure mode of metered hosts isn’t slow days. It’s good days. Picture a single image-heavy post pulling 100,000 reads off a Hacker News front page: roughly 500 GB of egress in a day.
| Host | Bandwidth model | The viral-day bill |
|---|---|---|
| Cloudflare Pages | unlimited (fair-use) | unchanged at ~$0 |
| Vercel | ~$0.15/GB past the 1 TB tier | a surprise |
| Netlify | credit-based overage | meaningful |
This isn’t hypothetical. In June 2024 a viral spike ran one Vercel project up a roughly $96k function bill; in February 2024 a single file on Netlify’s free tier generated a $104k charge (famously waived, but I don’t want to architect around a CEO’s goodwill). On Cloudflare Pages, the viral day costs the same as a quiet one. That’s not a discount; it’s a different shape of risk.
Markdown in Git is the most durable thing on the web
Every host above can disappear and I’d be back online elsewhere within an hour, because the artifact is a folder of text files. Markdown in Git is the most portable, most diff-able, most future-proof format we’ve got for writing. The deal I’m making with myself: keep the content framework-agnostic, and I can migrate the site in a weekend if I ever have to. Lock-in is a choice, and I’m choosing out of it.
Treating answer engines as a reader
Here’s the part most setups still ignore: a growing share of people never reach your page. They read an AI summary that cited it. So I treat agentic SEO as co-equal with the classic kind: allow the answer crawlers, write answer-first (lead with the one-sentence answer, then the depth, like this post), and ship a small hand-curated llms.txt for the optionality, even though no major engine retrieves it at volume yet.
What I don’t do is cargo-cult it. A 2026 Ahrefs study that tracked nearly 1,900 pages adding structured data found no meaningful lift in AI citations from schema alone. So I ship JSON-LD for rich-result eligibility and crawler comprehension, not as a magic citation lever. Honesty about what works beats ritual.
The bet, stated plainly
Two of these are fundamentals that’ll be true for years: pre-render to static HTML, and keep your words as Markdown in Git. One is a current-meta call: Astro-under-Cloudflare is the right pick today, and I’ll re-check it in nine months when the acquisition settles. Naming which is which is the whole discipline: it’s how you avoid mistaking fashion for engineering.
That’s the stack. It’s fast, it’s nearly free, it’s mine, and it’ll outlast the next framework cycle. Now I get to do the actually-hard part: write things worth reading.
Related
- Notes on Gladwell's craft garden
- My homelab in the high country garden
- Spaced repetition for engineers garden