From the idea to the finished blog in 11 days

My blog took 11 days from the idea to going live. I provide insight into the tech stack, the key design decisions and how I was able to do this alongside my daily work.

5 minutes
Hero image

Let me say something important in advance: the quick implementation was possible thanks to my respected colleague Maurice Renck. His extensive experience in content creation and blogging was essential to quickly setting up such a setup. So if you need support, contact him or me - then we'll rock your blog too.

Kirby

The tech stack of this blog is based on Kirby. In my work at konzentrik we often have to decide between Wordpress and Kirby with customers. Shockingly, Wordpress often wins, but we continue to proselytize. There's a lot to be said for Wordpress and, in most situations, even more so for Kirby. This has already been reported on in the konzentrik blog - look here: Kirby vs Wordpress and EoTo - a practical example.

Pro tip: with a setup With Kirby there is a particularly important security aspect - be sure to set up a “Public Folder” setup:

  • Essentially, it's about only making the index.php and .htaccess files accessible from the outside and thus minimizing the attack surface.
  • You can find the settings in the documentation.

Tailwind

In order to achieve quick results in the frontend, I can only recommend you to use a UI template. In my case, I looked for Tailwind HTML Design and purchased a suitable theme. If you want to do the same, here's a little tip:

  • Copy the source files into a /src folder, take the package.json from the template with the scripts for the Tailwind build.
  • So you can create your own minified main.css from the Tailwind source and add your own CSS adjustments - e.g. deliver Google Fonts locally GDPR.

One more thing about Tailwind in general: I'm basically divided on Tailwind. For small projects like this blog, the approach works perfectly. For larger websites, I find semantically named and clear class names for reusable and maintainable CSS better.

Hosting

The blog is hosted by All-Inkl in Germany. This puts me on the safe side regarding GDPR. Furthermore, administration is quick and easy. SSL certificates, redirection from http to https or your own email inbox can be set up with just a few clicks. This saves time, works reliably and is cheap.

Deployment

I manage the code in GitHub. I check in everything except the content. This allows me to work locally on plugins, blueprints, styling and translations of the framework. If everything is to my satisfaction, I will commit to a separate origin. On All-Inkl, this origin is checked out and my new code is ready within seconds. I just need to make sure any changes are non-breaking. Because I work on the blog alone and know what I'm doing, this is acceptable for this setup. If I were to work on it with a team, a different approach would be necessary. I'll write my thoughts on this in a separate article.

Automation

The automation behind deployment is manageable thanks to the simple setup. The push to the separate origin leads to a deployment on the All Inkl server - similar to Heroku. No semantic versioning or tagging is required. And yet everything is fully automatic. That's how I praise myself.

Content Creation

I create the articles in Kirby's convenient admin backend. The article and the images (e.g. the hero image) are stored as a markdown or file and linked in the template. Using the publication date I can determine when the article will be visible. The connection to social media channels takes place automatically towards Mastodon via IndieConnector Plugin. To sync from Mastodon to Bluesky, I use my own tool that I am currently developing with my colleague Maurice: CrossPoster. We will make it available as SaaS soon. Here you can register for the newsletter if you are interested.

Performance

In general, it should be noted that Kirby works without a database, which is why the site does not have a natural bottleneck - at least I have often experienced that an incorrectly configured database slows down a site enormously. As soon as a page is requested, a cache plugin saves it static file, so that from the second call only the finished HTML, CSS and JS have to be delivered.

Backup & Recovery

The setup consists of two components. The frame that is stored in the repository and can therefore be restored at any time. And the content that is located as files in the /content folder in the system. As a simple solution there there is an rsync cron job for this folder - I just like it!

Conclusion

Kirby is in use based on my everyday preferences at konzentrik. This makes local customization and development very easy. The lean tech stack allows for good automation, which allows me to focus on creating content. Thanks to the use of a UI template, the main work is cutting the HTML templates into Kirby templates and snippets. This made it possible for me to create the blog in such a short time.

The downside to the automation is manual publishing on LinkedIn and Medium - I will adapt the CrossPoster in the future so that it is enough to publish an article on Kirby and use Mastodon, Bluesky and LinkedIn on the one hand and a copy of the article on Medium on the other to switch.

If you are interested in an insight from a different perspective, take a look at the article 'A Kirby site in two weeks' to my colleague.

Subscribe to my newsletter

Receive once a month news from the areas of software development and communication peppered with book and link recommendations.