2025-05-12

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

sveltekitcloudflare pagesstatic-sitemarkdownjamstack
My (Slightly Chaotic) Journey to Svelte + Markdown + Cloudflare Pages

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

Table of Contents

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:

  1. Generous free tier with high bandwidth ceilings.
  2. Massive edge network (310+ PoPs) and HTTP/3 without extra config.
  3. 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?

Let’s Collaborate with me!

Ready to start your next project? Hit me up!

Contact Me