Content management systems, themes, plugins and headless CMS
A content management system, abbreviated CMS, is a system that separates the content of a site — texts, images, products, blog posts — from the code that displays it. The purpose is that an editor without programming experience can update the site through an administration interface, while the developer is responsible for the templates and the surrounding functionality. The training regulations for web developers have it as a separate subject: being able to implement your own frontend solutions in a given CMS, and to set it up, administer it and develop it further.
To build a website from scratch — with its own login editing surface image database and permission management — is a large piece of work that has already been solved thousands of times in existing systems. A CMS saves that time and at the same time gives the customer the ability to edit texts and add content themselves without having to ask a developer for help with every single change. The price is that you work within the system's framework and data model and that you take responsibility for keeping it updated.
Most CMS systems let you style the site with a theme (the look) and extend functionality with plugins or modules (e.g. a form, a webshop function or search engine optimization). It is a quick way to a lot of functionality, but each addition is also code written by others that runs on your site — with the trust and risk that entails.
A traditional CMS delivers both the content and the finished HTML page. A headless CMS only does the first: it stores and structures the content and provides it via an API typically as JSON. The frontend — built entirely independently such as an app or modern web solution — then fetches the content and decides itself how to display it. It gives freedom to reuse the same content in many places (web app digital signs) but requires you to build the entire display yourself which a traditional CMS would otherwise have provided.
| Property | Traditional CMS | Headless CMS |
|---|---|---|
| Delivers | Content + finished HTML page | Only content, via an API |
| Frontend | Often tied to the CMS's own templates | Built completely freely independent of the CMS |
| Content reuse | Typically only on one side | Easy to reuse across surfaces |
| Startup time | Faster getting up | Requires more frontend work itself |
Setting up a CMS is only the beginning. Ongoing management involves updates, regular backups, user and permission management, and monitoring that the site performs as intended. Set permissions according to the principle of least privilege: an editor who only needs to write news does not require access to system settings or other users' accounts.
There are many CMS systems each with its own strengths: some are broad and widely used with a large selection of plugins others are specialized for web shops and still others are built as headless solutions from the ground up. Part of the trade is being able to get into the system a given workplace or client already uses rather than only knowing one particular system by heart.
“A CMS does not solve the problem of maintaining a website — it moves the task from writing HTML to keeping an entire system updated and safe.”
— Rule of thumb from CMS operations