My (Slightly Chaotic) Journey to Svelte + Markdown + Cloudflare Pages

Table of Contents
“If I can run it for free, I will.”
— me, every time I start a personal side-project
The itch to rebuild
My old blog had been gathering dust for years.
When I finally opened the homepage in 2025, it greeted me with a janky layout shift, a lighthouse score that limped across the finish line, and code so tangled even I—its author—couldn’t remember the wiring.
I suddenly had some free evenings, so I made a promise:
Let’s rebuild this thing, but do it right—and learn something new on the way.
Dating a few frameworks
I started where most JavaScript refugees start: Next.js.
It had powered the previous version, so spinning up a fresh repo felt natural… until it didn’t.
- React’s bundle size still looked heavy for a mostly-static blog.
- I was itching to play with something fresh on the front end.
That’s when I tripped over Svelte—a framework that compiles your components away, shipping almost no runtime. Articles raved about its performance, and the syntax felt fun. I cloned a demo, ran npm run dev, and the “aha!” moment landed: tiny bundle, snappy HMR, almost no boilerplate. I was sold.
(Astro flirted with me briefly—zero-JS islands are very appealing—but SvelteKit’s roadmap and ecosystem felt steadier for what I needed.)
Markdown beats a headless CMS — for this project
Originally, I planned to pair the front-end with Strapi.
The idea: write posts in a nice admin panel, webhook a rebuild.
Two evenings of tinkering later I realised:
- Keeping Strapi secure, backed-up, and upgraded is overkill for one-author notes.
- A $5/month VPS (or hosted DB) just to store a handful of articles breaks my “free if possible” mantra.
So I ditched the CMS. Plain Markdown + YAML front-matter gave me:
- The joy of writing in VS Code at 2 AM.
- Zero vendor lock-in—my posts are just files in Git.
- Instant builds with
mdsvex, which lets me sprinkle Svelte components right inside Markdown when I need interactivity.
Static-Site Generation all the way
I never seriously considered SSR for this project.
Static sites are:
- Cheap — no servers to babysit.
- Fast — SEO loves pre-rendered HTML.
- Easy to cache — slap a CDN in front and you’re done.
SvelteKit’s adapter-static made the decision even easier: every route becomes a pre-rendered file, yet I can still opt-in to client-side interactivity where it counts.
Hosting showdown → Cloudflare Pages wins
My last blog lived on Vercel / Netlify. They’re great!
But I discovered Cloudflare Pages and three things clinched it:
- Generous free tier with high bandwidth ceilings.
- Massive edge network (310+ PoPs) and HTTP/3 without extra config.
- Zero-config rollbacks & built-in analytics—and, well, I was curious.
So far, the experience has been smooth: push to main, watch Pages build and deploy. No horror stories, no surprise throttling.
(If traffic ever explodes, Cloudflare’s free egress should shield my wallet. Fingers crossed.)
Local builds > cloud builds (for now)
CI minutes weren’t the villain here; reproducibility and speed were.
My whole site (pnpm run build) takes ~5 seconds on my laptop—including the sitemap and image optimisation. Kicking that off locally while writing feels snappier than round-tripping to a cloud pipeline every few minutes.
When the blog stabilises, I’ll wire up GitHub Actions; for rapid-fire edits, local is king.
A few bumps still ahead
- Search & pagination — I might start with client-side FlexSearch, then graduate to Algolia if the post count explodes.
- Comments — leaning toward Webmentions or a self-hosted
giscus. - Light theme toggle — dark mode ships first, light mode soon after.
- If I must go dynamic (e.g., serverless functions for comments), I’ll prototype in Cloudflare Workers before touching SSR.
Closing thoughts
Rebuilding wasn’t just about swapping frameworks—it was about choosing constraints:
- Performance over convenience.
- Simplicity over feature creep.
- $0/month over “nice to have.”
For my personal site, SvelteKit + Markdown + Cloudflare Pages nails that balance.
Will I pivot again? Maybe. Technology moves, curiosity wins. But today, this stack feels as clean and lightweight as I hoped—and the page finally loads before I finish my coffee.
What do you think?
Have you tried SvelteKit or Cloudflare Pages for a static blog?