Skip to content 2.0

Headless CMS

Author: Natalia Venditto

Date First Published: Wed Jan 04 2023

What is a CMS?

CMS stands for Content Management System, and it’s an application that allows content authors to create and manage content of all types, like text, images and video, etc.

Content Management Systems are built with the -at minimum- the following components:

  • authoring console or interface
  • data storage
  • data querying mechanisms
  • delivery

Although those are the typical components, there could be more(*), Content Management Systems are built with different technologies and patterns. CMSs have been mostly fully integrated, meaning that the backend and frontend are part of the same system. We can reference

  • Wordpress
  • Drupal
  • Adobe Experience Manager
  • Sitecore

and the likes, as very popular CMSs used for personal sites to startups to enterprise-grade platforms.

When we say they’re integrated, it means that they were equipped with a templating system, and whatever data they stored, was delivered to a user interface that was rendered by a templating mechanism that was part of the same system.

What is a headless CMS?

A headless CMS is a Content Management System that does not prescribe how data is presented to the end-user in the frontend. That means that these systems offer the ability to author content, store it, and decide what the head or frontend, will be built with, independently.

While all of the above listed CMSs have developed new mechanisms to deliver to a decouple frontend, for example [Adobe Experience Manager] offers a mechanism to deliver all content as JSON fragments via standard RESTful APIs, and you can query the Wordpress and Drupal internal APIs from a detached frontend, there has been emerging technology built specifically with the purpose of managing content and delivering it, in completely independently developed and maintained systems.

One example is part of the repository sample we link to in the main page, Strapi

Headless CMS architecture

The diagram below represents the architecture flow for the Strapi implementation as part of the decoupled frontends sample. The CMS server can be found in the blog-cms package, and it serves content to both the blog and the portal, as decoupled vertical frontends.

event driven architectures