Content management systems in the real world

Who this article is for

This is part two of a seminar originally written for undergraduate design students, but it'll work for anyone who is comfortable with HTML and the command line.

In part one we discussed that content management systems let us build bigger web projects by abstracting our content away from your markup. We do that by moving our content into some form of datastore, writing templates to describe how we want to display that data, and finally setting up some system to combine templates and data into HTML files a browser can render.

There are many choices for each of these components.

Data stores

Any place you can store information in an organised way and retrieve it programatically is probably going to work as a datastore for your website. Here some I've worked with:

Which one you choose depends on the kind of site you're working on.

Templating languages

Systems

Some systems are attached to particular datastores and templating languages. For instance, Wordpress only works with MySQL and generally uses PHP templates (though I like to use Twig instead). Kirby uses PHP templates too, but stores the data in text files. Both Wordpress and Kirby also give you a visual interface to edit the data, so you don't have to edit MySQL tables or those text files directly. Systems like this are sometimes called monolithic.

If that's too limiting, there are systems that give you more choices. First, there are systems that only give a datastore with an editing interface, with the assumption that you'll figure out your own templating situation. These systems are sometimes called headless.

A Google spreadsheet would fall into this category, as would specialised services like Contentful, Sanity, and Ghost.

There are also tools that just do templating and don't particularly care about where the data comes from. This site is built in Eleventy, which can be attached to pretty much any datastore and supports a range of templating languages. React would fall into the same category - it has sophisticated templating, but won't help you to store your data.

Let's set up a CMS

This article also appeared on Medium.