It feels like that time of year when I start looking at my existing projects and wondering whether any of them could be updated. After some digging around, I decided to see whether I could refresh my blog.
My existing platform is Astro, which has served me well. It lets me see the inner workings of the application and make changes whenever I need to.
My Existing Publishing Workflow
The process of publishing an article starts with a draft in Typora, using a template I created that includes all the front matter. This gives me an almost-finished Markdown file that I can add to the repository.
I then add the images to the assets folder, check that all references and links are correct, and push the repository to GitHub. From there, the rest is automated: Netlify monitors the repository and deploys the site whenever it detects a change.
It is a simple workflow that gives me room to experiment when I need to.
Discovering EmDash
Earlier this year, I recall reading that Cloudflare had released EmDash, describing it as a natural successor to WordPress. WordPress had never particularly impressed me, but the fact that EmDash was based on Astro stuck with me.
I began by looking at the sample blog site to see how it could be adapted. I deployed it to a Cloudflare Worker and, after realising it also synced with a private GitHub repository, I could see the inner workings and how I might customise it.
The next step was deciding how much of the TechnTrek branding I could bring over, and how much I wanted to keep more vanilla. The CMS and admin areas of EmDash were the features I had been missing with native Astro, so I was mainly curious about the presentation layer.
Adapting the Design
I cloned the template blog repository twice: one copy remained completely untouched, while the other became my target version — the new and improved blog.
Comparing the old look and feel with the new one showed me there were things I definitely wanted to keep, and others I was less concerned about.
After plenty of discussion with ChatGPT, I decided to give its worker function a chance. I copied the existing TechnTrek code into the same working folders and let it compare the two.
Note: Copying the templates was much easier than starting with the full EmDash repository and working from there. It gave me just the parts I needed from the beginning.
Some things took a while to get right. I found that, after trying to describe an issue, providing screenshots to the ChatGPT worker helped move things along. For example, asking it to increase the size of the masthead logo made more sense when I showed the logo alongside the text.
Migrating the Content
Once I had the site almost where I wanted it, it was time to migrate all the content.
For the article text, it was easier to copy it from the browser view than from the Markdown files. However, I still had to examine the files to work out which images were used.
I recreated the same image-folder structure in EmDash that I had used with Astro, which makes everything easier to manage. However, there is currently no way to upload directly into a folder: all images go into the root location and have to be moved one at a time. That is not much fun.
I also found that image delivery felt slower than on the existing Netlify-hosted site. To help with this, I converted all images from PNG and JPG to WebP. This saved a lot of space, and the page-loading experience is now more or less where it should be.
Moving the Domain
Then it was time to move the domain. It took a while: first redirecting the DNS nameservers, then moving the domain registrar to Cloudflare. It is a useful reminder that not everything on the internet is instant.
But now it is live, and I feel it was worth the effort.
I now have a CMS admin page, a place where I can author articles, a way to see which images are used in which post, and the ability for readers to add comments — something I have always wanted. I also get to see how EmDash evolves.
It is not quite self-hosted, but neither is it a SaaS platform. I still have the code in a repository that I control.
Time will tell, and who knows — perhaps in 12 months, it will be updated again.

No comments yet