From ASP.NET Core to Hugo: My Blog's Migration to Cloudflare

Like many developers, my blogging journey started with WordPress. More than 20 years ago. It was convenient, widely supported, and quick to set up. But over time, the drawbacks began to pile up: security issues, constant updates, performance tuning, plugin juggling, costly – the overhead was real. I wanted something more streamlined, something that gave me control without stealing my time.

From WordPress to ASP.NET Core

When ASP.NET Core was introduced in 2015, I saw an opportunity. I decided to build my own blogging engine. Hosting it on Azure was straightforward and cost-effective. More importantly, it became more than just a blog – it was a sandbox.

I had around 50,000 unique visitors per month, which made it a perfect platform to experiment with the latest ASP.NET Core features in production. Every new release from .NET gave me a reason to explore, test, and apply fresh ideas – insights I could directly bring into customer projects.

Writing posts in Markdown was simple and effective. The setup just worked. For a long time, it was the perfect balance of control and productivity.

Why I Decided to Migrate Again

But things changed.

Over the last few years, I’ve been gaining deep experience with ASP.NET Core through larger platforms like mycsharp.de , which I’ve completely rebuilt with it. That experience gave me all the technical exposure I needed. I didn’t feel the need to maintain another custom engine just for the sake of learning.

Meanwhile, Cloudflare’s developer ecosystem started to look incredibly promising. I already have real-world projects running entirely serverless on Cloudflare, and I was eager to explore more of what the platform could offer – especially with Cloudflare Pages and Workers. Their roadmap aligns with many of the challenges and needs I see in future customer projects.

I recently migrated my employer’s website – Medialesson – to Hugo hosted on Cloudflare Pages. The developer experience was fantastic: blazing fast builds, GitHub Actions for automation, zero maintenance overhead, and instant deploy previews. I was and I am hooked.

So I decided to take my personal blog the same route – with a twist: Hugo on Cloudflare, powered by GitHub Copilot.

GitHub Copilot as a Migration Assistant

The migration from ASP.NET Core to Hugo wasn’t just a copy-paste job. I had several goals:

  • Preserve all existing content (Markdown made this easier)
  • Migrate custom routing and permalinks. Luckily my blog post paths are perfect and match all recommendations.
  • Recreate certain dynamic features (like tag pages and archive listings)
  • Set up a smooth CI/CD pipeline with GitHub Actions
  • Optimize the whole thing for Cloudflare’s edge delivery
  • Optimize SEO

This is where GitHub Copilot came in. I used it as a pair-programmer throughout the migration:

  • It helped generate the initial config.toml and asset structure for Hugo
  • It assisted in writing Go templates for the new theme
  • It suggested GitHub Actions workflows for deploying to Cloudflare Pages
  • It even helped with Worker script tweaks where I needed custom redirects and headers

Copilot didn’t replace me, but it sped me up tremendously - especially when I hit those “How did Hugo do this again?” moments.

New content

I have also taken the opportunity to update my content.

  • My personal site, which it used to be, is now benjamin-abt.com . I will use schwabencode.com exclusively for my freelance work.
  • Under /projects you can now see my own projects
  • Under /about you can see a kind of CV, with my work experience and my client projects
  • Under /contact you have the possibility to contact me directly.
  • The content is now english-only.

The Result

Today, my blog:

  • Runs 100% static on Hugo
  • Deploys instantly via GitHub Actions
  • Is globally distributed via Cloudflare Pages + Workers
  • Requires zero patching or maintenance
  • Is cheaper, faster, and more future-proof than ever
  • I still write in Markdown. But now the publishing process is even cleaner, and the platform underneath is built for scale and experimentation.
  • Unfortunately, Cloudflare does not yet support .NET - something they really need to deliver.
  • Cloudflare offers me its own URLs for pull requests by default - i.e. my blog post reviews; something that only works on Azure (but also AWS and Co) with very high effort.

What’s Next?

This migration marks a shift: from ASP.NET Core as my personal tech playground to Cloudflare as my new edge-native lab. Cloudflare Workers give me a lot more options for features. Some of the things I’ve always wanted to do are now a little easier to implement.

If you’re building modern, fast, low-maintenance sites - whether for yourself or your customers - Hugo + GitHub + Cloudflare is a stack that’s hard to beat. And with Copilot in the mix, you can focus more on content and ideas, and less on plumbing.


Comments

Twitter Facebook LinkedIn WhatsApp