Initial thoughts on Kirby CMS

I started using Kirby CMS for a project recently, and I’m super excited about it. The project is replacing a WordPress site that I built a few years ago with the WordPress Gutenberg editor, which has been a pain to maintain. To add a new page to a collection of identical pages, I had been cloning an existing page to copy the layout over and then editing the content. This worked, but I wished for a solution that I could tailor for each collection and not have to worry about copy/pasting between a bunch of pages if I decided to change the layout.

There’s a number of ways to do layouts and custom fields in WordPress, but the solutions I found were finicky or felt bolted on. And I have to think about the experience for other people editing the site, which is challenging with how labyrinthian the WordPress admin panel and the editor itself have become.

I’m not going to say Kirby is better than WordPress; it’s a lot more nuanced than that. But for this specific project, Kirby fits my requirements better.

Take the collection of identical pages example: In Kirby, I can set up the pages in the CMS however I want (called blueprints), and then build templates to match. An event page might have a title, date, description, and a button. I can create a blueprint for the CMS side that contains just these fields, and then pull in the contents of those fields in my template. A user adding a new event on the CMS side would get presented with a page that only contains what they need: Fields for the title, date, description, and button.

Templating for Kirby has been interesting. The file structure reminds me of Hugo, where template names match content file names. I hadn’t messed with PHP for a long time and I’m figuring out how things work. But I’ve built 10 templates that render ~30 pages, and I’m 90% done on the CSS side of things. I have about five or six more complicated things to work out, but they’re not showstoppers. The documentation has been incredibly helpful and I’ve only had to do a handful of web searches, which is rare!

Hosting Kirby is straightforward, there’s no database nonsense. Upload the files to your web server and you’re good to go. I’m working on adding a deployment pipeline to automatically pull the repo from GitHub when I push template changes. Composer installs Kirby for me. The page content lives in text files, which I excluded from version control to avoid conflicts. They’re backed up with a script.

Local development is nice, I’ve been using Laravel Valet, and any of the trusty *AMP stack tools work too (remember XAMPP?).

A big factor influencing my software choices lately is longevity; I’m trying to avoid new companies and one-off projects. It’s much easier to find help for things that have been around for a while. Fortunately Kirby’s first release was in 2012, and they’re still going strong.

I’m not done with this project yet and I’m hesitant to place a solid “you should use this!” statement, but if you’re looking for a CMS that you can tightly tailor to your needs, I recommend taking a look at Kirby.