I wanted a blog that’s fast, cheap to host, and easy to maintain. After evaluating a few options, I landed on Hugo with the PaperMod theme, deployed to Cloudflare Pages. Here’s the full breakdown.

The stack

  • Static site generator: Hugo — fast builds, great templating, large ecosystem
  • Theme: PaperMod — clean, minimalist, fast, well-maintained
  • Hosting: Cloudflare Pages — free tier, global CDN, automatic deploys from GitHub
  • Comments: Giscus — powered by GitHub Discussions
  • Domain: Cloudflare Registrar (at-cost pricing, ~$10/year)

Why Hugo?

I considered Next.js, Astro, and Jekyll before settling on Hugo:

  • Build speed: Hugo builds this entire site in under 100ms. No bundler, no node_modules.
  • Single binary: No runtime dependencies. Download Hugo, run hugo server, done.
  • Maturity: Been around since 2013. The templating is quirky but well-documented.

The tradeoff is that Hugo’s Go templating language has a learning curve, and the ecosystem is smaller than React-based alternatives. But for a content-focused blog, it’s hard to beat.

Design decisions

I started with PaperMod’s defaults and made targeted CSS tweaks:

  • Narrower content width (700px) for better readability
  • Warm color palette - off-white backgrounds instead of pure white
  • Inter font for body text, JetBrains Mono (Dracula theme) for code
  • Minimal navigation - just the sections I actually use

Most styling lives in a single custom.css file that PaperMod auto-loads, with a few layout overrides for the ToC sidebar and comments.

Deployment

The deploy pipeline is dead simple:

  1. Push to master on GitHub
  2. Cloudflare Pages detects the push
  3. Runs hugo --minify
  4. Deploys the public/ directory to their global CDN

Total time from push to live: about 30 seconds.

Cost

ItemCost
HugoFree
PaperMod themeFree
Cloudflare Pages hostingFree
Domain (.com)~$10/year
Giscus commentsFree
Total~$10/year