Skip to content
cnandreu
1 min read

Hello, world

Why this blog exists, and the stack that runs it — Astro on Cloudflare's edge, built and shipped from a self-hosted Forgejo.

Every good homelab eventually grows a blog. This is mine — a place for long-form notes on the media stack I run, the small tools I build around it, and whatever I’m learning along the way.

Why bother

Most of what I figure out lives in scattered scripts, commit messages, and my own memory. Writing it down forces the ideas to hold together, and occasionally it helps someone else running into the same wall. That’s the whole pitch.

How it’s built

The site is intentionally boring in the best way — static files served from the edge, with no server to babysit:

  • Astro — content-first, ships zero JavaScript by default, and renders Markdown into fast static HTML.
  • Cloudflare Workers + Static Assets — the built site is served straight from Cloudflare’s edge on the free plan.
  • Self-hosted Forgejo + CI — writing a post is a git push; CI runs the quality gate and deploys with wrangler.
  • Catppuccin — Latte in the light, Mocha in the dark, following your system preference (with a toggle if you disagree).

Publishing really is just this:

just new "My next post"   # scaffold the folder + frontmatter
# ...write...
git push                  # CI builds and deploys to cnandreu.com

What’s next

More posts, mostly. If you want to follow along, grab the RSS feed. If you want to argue with me, that’s what X is for.

Thanks for reading.