Kirby: The Flat-File CMS That’ll Make You Rethink Content Management

Most sites these days are powered by a CMS, and hand-coding a site from plain HTML files would seem terribly archaic. And yet, for most sites, the average CMS is a huge overkill. There’s so much to them, it’s sometimes hard to change the tiniest thing. And rich editing … well, for the most part, the world would be better off without it.

There’s been a recent rise of simple CMSes, ones that use just plain text files with Markdown files to make a full website. As a writer who writes in Markdown, those are terribly interesting to me. One in particular stood out to me as a simple yet powerful flat-file option, and it was so nice that instead of just trying it out, I switched my entire site to it, and still use it months later.

That CMS is Kirby, from Bastian Allgeier, one of the guys behind Zootool. We’ve already had an interview with him about Kirby, so today, let’s take a closer look at what makes Kirby so great.

Bah, Humbug.

Last year, I got tired of WordPress. Don’t get me wrong: it’s an incredible CMS that powers AppStorm and many of Envato’s other sites, and it’d be the first thing I’d recommend to most people wanting to start a new blog. The WordPress community has made so many amazing themes, plugins, tutorials, and more that it would seem you could do anything with WordPress.

But the problem is, it’s so big, digging into its code seems almost as daunting as patching the Linux kernel, if you’re a beginning coder. WordPress themes are too complex for most people to code, which is why themes like WooThemes’ Canvas and StudioPress’ Genesis Framework got so popular: they take care of the messy, WordPress side of themeing, so you can almost create your own original WordPress theme without having to touch any (or much) code.

Then, if you need to edit your articles, expect to either have to dig into MySQL if you don’t want to use WordPress’ built-in editor. Want to manage your images and uploads? Again, it’s WordPress’ interface, or digging into the file structure WordPress setup.

WordPress is not all bad, and it’s worked for millions of sites and would still be one of my most highly recommended web apps. But it’s complex, and I wanted something simple to build my site, and manage my content.

Enter Kirby

A breath of fresh air

Kirby is a PHP powered CMS that lets you organize your content in folders and write in plain text files with Markdown formatting. That’s it, in a nutshell, and it’s just as simple as it sounds. You can download it for free to try it out (a license will cost $39), upload it to your server, and have a full site up and running literally in minutes. SSH into your server and download it directly from GitHub by commands, and it’ll likely only take a few seconds to have it running.

Then, you just make folders for each page you want, a .txt file with that page’s content, and sub-folders for sub-pages with their own content. Want to add images, or any other content files? You can just add them right in that page’s folder, and can even include an extra text file with more data about that file. Want a special post to have its own CSS and/or Javascript for art-directed posts? That’s easy; just drop the files into that page’s folders.

Formatting posts is easy, too, if you’re used to Markdown. You’ll separate sections (say, the page title, date, tags, content) with dashes, and format the content itself with Markdown (though HTML will work, too). Since any of the post’s content is in the same folder, linking to it is easy. And rather than being stuck to one set of information for pages, you can add anything else you want just by adding an extra field. Say you want to have a link blog like Daring Fireball; just add a Link: field with the link, and you can then easily use that info in your site.

An article formatted for Kirby

If firing up a plain-text editor and FTP app every time you want to post sounds too archaic, then you use the Kirby Panel to post and edit your content right from your browser. It works great, though currently isn’t optimized for, say, hundreds of posts, though Bastian promises a writer-focused update to the Panel soon. And hey, posting plain-text files via FTP is pretty nice, in my opinion, and it means you can rather easily post from almost any platform, even from a text editor on your smartphone. What’s more, since everything on your Kirby site is files and folders, you can sync your whole site via Dropbox (if you have a VPS or dedicated server), and just save new post files to your Kirby folder in Dropbox to have them automatically published to your site.

There’s a real web app, too.

Building Your Site

The default theme likely won’t cut it for you, though it’s a great place to start. The good thing is, designing a site with Kirby is as simple as it could be, if you know your way around CSS and HTML. It’s just designing a site as normal, because using your Kirby content in your site template is very simple. There’s tutorials for almost any snag you might hit, and after looking around at a few, you should be able to find your way around the code, even if you’re not used to using PHP. You can grab anything you’ve put in your posts with simple syntax like $page->title(), swapping title for any fields you’ve used in your posts. That made it easy for me to add link posts to my blog, and it should make it easy to you to build anything you want with Kirby.

Simple coding

Even for such a simple CMS, there’s a ton of things you can already do with it, even without digging into its relitively simple coding. There’s plugins, template files, themes, and more at the downloads page. You can use them directly, or use them for ideas for your own Kirby coding projects. And hey, there’s quite a few nice themes already for simple writing focused blog posts or image blogs already, so you’ll likely find something that’ll be great to start out with.

Best of all, there’s a WordPress and Posterous exporter that works perfect at exporting your files to Kirby-formatted folders and text files. You can even tweak the code to export in the text file format you want (I personally use the .md extension), and then can set Kirby to use that file extension for your content files instead of .txt. If you move over from WordPress, just be sure to keep your wp-content folder so your images will still display in your articles, as the exporter doesn’t move them to the folders, and check this tutorial to get your WordPress permalinks moved over to Kirby. That’s all I did, and I had my full WordPress site on Kirby in a matter of minutes. It really worked great, migrating my site with over 200 posts without a glitch. The WordPress exporter will leave the HTML formatting in your WordPress posts, but that’s fine, as Kirby will still display your posts just fine.

Yup, you can do more. So much more.

Conclusion

A flat-file CMS might not be for everyone, but then, a database powered CMS isn’t for everyone either. If you’ve been wanting to try out a flat-file CMS that’s still fully dynamic (not rendered static files like you’ll get with Jekyl), then I’d highly recommend giving Kirby a try. If you’ve wanted an alternate to WordPress but haven’t really given any other CMS a serious thought, I’d recommend Kirby, too. It’s great for simple sites, and makes far more sense for, say, a business site with 5 pages, than a CMS like WordPress does. But, it’s also great for more complex sites; Kirby’s own homepage is built with it, as are a growing number of sites in their showcase.

You can try it out for free, and if you decide to switch, the support on Twitter, email, and the Kirby Forum is nothing short of fantastic. It’ll make you definitely feel that you’re getting your money’s worth out of it.

It’s worked great for me, made switching Techinch.com from WordPress far easier than I would have ever expected, and makes me feel more empowered to actually control how my site works. That’s worth recommending, any day.


Summary

A flat-file, Markdown enabled CMS that makes it simple to build sites from plain text files.

10
  • http://www.ruehlpublishinghouse.info Oliver Ruehl

    Hi!

    Great review. In a few months we’ll all go back coding single HTML files hehe.

    I can also recommend this to everyone who is sick of WordPress (seems like this sickness is spreading).

    It is worth mentioning that Kirby is inspired by the Stacey CMS (MIT License, http://staceyapp.com), which I’m also using. I love the choices we have today.

    Kind regards
    Oliver

    • http://techinch.com/ Matthew Guay

      That’s exactly right. Another good option is http://statamic.com. I’m still a happy Kirby fan, but it’s awesome seeing all the options out there today.

  • http://www.qoyyuum.me A

    Using Kirby to build a local business web directory? Challenge Accepted! Thanks for this review, I’m quite convinced that this may be the better CMS for a directory (playing with tags instead of categories). :)

  • http://www.mahadera.com jsonmat

    CMS simple is also a good option for flat-file CMS. But I think, Kirby is easier to use.

  • Ivan

    I was looking for a CMS that would allow me to simplify my writing and publishing workflow as well as site management. After reading this article, I was excited to try Kirby. I played with it but found that it has missing features out of the box like categories, tags, and the admin pannel. Kirby also relies on knowing how to code in PHP. This was too much for a beginner like me.

    After doing a bit more research, I found Statamic, which is similar to Kirby. After testing Statamic for some time, I decided to move my WordPress website to Statamic. It supports markdown, easy to understand and code if you know know basic HTML and even if you don’t. The community and the documentation are excellent.

    +1 for Statamic. Highly recommended.

    • http://techinch.com/ Matthew Guay

      Neat to hear Statamic has worked out good for you!

  • adamrafferty

    Looks very cool. Question, what about seo, meta tags and the like. Are those variables something that can be included in pages as well? I briefly looked at the download and t looks like Title, Date Text are all that one is supposed to specify.

    Maybe I have not dug deep enough!

    Thanks -

theatre-aglow
theatre-aglow
theatre-aglow
theatre-aglow