I changed my mind, my CMS adventure
When I launched this site a few days ago I posted that I’d settled on Kirby as my CMS1 of choice. This wasn’t exactly a spur of the moment thing, it’s a system I’ve been dabbling with for quite a while. In fact, my introduction to Kirby came from the talented Simon Collison when he designed and built my company site some time back.
I’ve since changed my mind.
I had a particular set of criteria in mind for whatever was going to power the content behind this site. The emphasis was on keeping things simple, whatever it was had to be lightweight and easy to maintain. In order of importance:
- No database
- Content flexibility
- Easy system updates
- Easy content updates
- Lightweight codebase
- Familiar templating
- Free (to me)
Craft
My normal go-to in the world of content management is Craft, and has been since its inception, when it replaced ExpressionEngine that I’d been using for the years preceding that. I still have installers for Blocks kicking around in my file archive.
I could likely have built this whole site from start to finish in under an hour with Craft. As far as content engineering and templating goes I know it inside out and it has all the functionality I could possibly want, along with a dozen kitchen sinks. Also, whilst it has a free version, I have enough spare grandfathered Pro licences to choke a yak^[Please don’t choke yaks.], so there’s no cost implication.
The main issue for me with Craft in this particular instance, was that it broke the very first criteria; it can’t be used without a database and MySQL just wasn’t a headache I wanted to deal with for this project.
Kirby
So having used Kirby a little bit in the past this was next in line to look at. There’s a lot to like here; it has a very clean, modern editing/admin panel, a flexible long-form content field type and well presented documentation. It stores content as flat files, so no database to worry about, and system updates are as simple as dropping in a replacement “kirby” folder. I already had a licence too, so whilst it wasn’t free, I didn’t need to pay anything to use it on this occasion.
On the face of it, it ticked pretty much all the boxes, so I jumped in. The site came together pretty quickly, an afternoon from start to finish, and this was the site I launched on Hogmanay.
I don’t want to delve too heavily on the “negatives” that ultimately caused me to waver on my original decision, because I’m fairly sure most of these were simply down to my lack of experience with the system. I ran into problems trying to customise/extend the panel, again not a fault of Kirby, just a lack of coding-fu on my part. Something as simple as trying to customise the Blocks field, even by following the example code, just didn’t work for me.
I was, in the end, able to get Kirby to do pretty much everything I needed by doing away with the Blocks field and throwing all my content into a single Markdown field.
At that point, however, I was starting to wonder what benefit Kirby was bringing to me for this particular site over some of the Static Site Generators that were available. If I’m writing my content entirely in Markdown anyway… why not just do away with the panel and PHP requirement completely.
Eleventy
Enter Eleventy, a Static Site Generator that outputs completely flat HTML from your source templates. No database, no PHP, just good old fashioned HTML like we used to make back in the day, without or without spacer GIFs.
It’s no exaggeration to say that I must have picked up and put down Eleventy eleventy or more times over the last year or so^[See what I did there.]. Every time I’ve looked at it, I’ve struggled to get my head round it, though that likely says more about my head than Eleventy to be fair.
However, I did take another look at it again a couple of days ago. Since I already had the HTML/CSS more or less all built for the Kirby version of the site, I followed a couple of short “Build a blog in Eleventy” tutorials, got a basic example built and then dropped in my HTML/CSS.
This time, something clicked.
If you’re reading this, you’re reading the completely static site generated by Eleventy.
Eleventy supports a handful of templating languages out of the box, and I found myself quite at home with Liquid, for basic templating it felt very similar to Twig which I was familiar with. The content is all raw Markdown with some Frontmatter, no Liquid tags in the data, even the fully responsive image embedding and the footnote support is just Markdown.
I have to say this whole static site thing is very freeing. I can throw these files anywhere, there are literally no server requirements what-so-ever. I can use my own servers, of course, but I can also experiment with the likes of Github Pages, Cloudflare Pages, Netlify, Vercel, you name it.
I can see more Eleventy sites in my future.
I’m using the term CMS liberally here, I appreciate it may not be 100% accurate for some of these systems. ↩︎