Skip to content
Kruno Golubić
Go back

Why I Moved My Blog to Astro

Kruno Golubić

For the past several years, most of my writing has happened in Markdown. Documentation, technical guides, notes. I started the blog years before I was using Markdown. By the time I got comfortable with it and started genuinely liking Docs-as-Code as a principle, the blog was still on WordPress.

The Reason Behind the Switch

As a technical writer, I’ve worked with Docusaurus, Nextra and MkDocs. Static site generators are familiar territory. I knew there were good options for a personal blog too. I just hadn’t gotten around to picking one.

What finally pushed me was a mix of things. I wanted to learn what Cloudflare could do beyond DNS. I was curious whether GitHub Codespaces could replace a local development setup entirely. I wanted to see how far I could get on essentially zero budget. I already owned the domain.

The question I kept coming back to: how much good, free infrastructure can you actually use to run a simple site? I wanted a real answer, not a theoretical one.

Why a CMS Is Overkill for a Personal Blog

For a team, for a client site, for anything with multiple contributors or complex publishing workflows, having a CMS makes sense. For a blog maintained by one person, it’s a lot of machinery. Database, PHP, plugin ecosystem, security updates, backups. All of that exists to support a publishing workflow that, for me, boils down to: write a file, push it, done.

A static site generator does exactly that. No database, no server-side processing, no moving parts that need maintenance.

Why Astro Specifically

Hugo is fast and mature but Go templates feel foreign if you’re used to JavaScript. Jekyll has been around forever but the Ruby ecosystem is increasingly awkward to set up. Eleventy is flexible but requires more configuration to get a basic blog running.

Astro felt right for a few reasons. It ships minimal JavaScript by default, which matters for a content-focused site. The .astro component format is close enough to HTML that it’s readable without a learning curve. And the theme ecosystem, while smaller than Hugo’s, had what I needed.

I found AstroPaper, a minimal blog theme with dark mode, search, tags, and RSS built in. Clean code, readable structure. That was enough.

The Markdown Question

MDX gets you closer to the layout flexibility of HTML and CSS, but it adds complexity. I made a deliberate choice here: content over presentation. I’m not trying to build a design showcase. I’m trying to build an archive of things I’ve written and learned. Markdown is good enough for that, and it stays out of the way.

The tradeoff is real. If I ever want something more visually complex, I’ll hit a ceiling. For now, that ceiling is far enough away that I’m not worried about it.

How Much Does Free Actually Mean

The domain I already had. Everything else runs on Cloudflare Pages free tier and GitHub free tier. Cloudflare Pages has no bandwidth limits, which matters for a site with a growing archive of images. GitHub Codespaces gives me a full development environment in the browser, no local install required. I can write and deploy from any computer.

Guess what: practically free is actually achievable. The whole setup costs nothing beyond the domain renewal.

Is There a More Logical Starting Point

There’s something to be said for learning new tools on your own project. No client expectations, no production pressure, no one else affected if something breaks for an hour. A personal blog is low stakes and high relevance. You’ll actually use it, which means you’ll notice things that don’t work and fix them. That feedback loop is worth more than any tutorial. That feedback loop is worth more than any tutorial.

The technical writing background helped too. I already had 60+ articles from the Sistemac portal, the Memgraph blog, and a few other places. Migrating that archive gave the project real scope, not just a hello world deployment.

I had the domain. I had the content. I had the curiosity. Seemed like a logical place to start.

The next post covers how I chose the specific tools: Astro, AstroPaper, Cloudflare Pages, and why I decided to use GitHub Codespaces instead of a local development environment.


Share this post on:

Previous Post
When Cloudflare Forgets to Listen
Next Post
Memgraph vs. Amazon Neptune: A Graph Database Comparison