Content Management Systems (CMS) for developers: An introduction

Imagine this: It’s a sunny morning, you get your first coffee and prepare yourself for the first user story of the day that you will implement in your role as software engineer. It reads like this: “As a user, I want to reset my password…”, and another one: “As an admin, I want to edit articles …”. Your heart sinks. Your creativity withers. Is this what you signed up for when you dreamed of solving complex and meaningful software problems?

There are usually more urgent issues than to implement functionality for the 100th time. One pain reliever could be just around the corner: Content Management Systems (CMS).

CMS have become wide spread tools in modern web/mobile development, offering many advantages for software developers as well as content creators. These platforms streamline content creation, management, and publication processes, allowing developers to focus on more complex and exciting coding tasks. This post will explore how leveraging a CMS can significantly boost developer productivity and happiness. In addition, I will compare different CMS to each other and propose criterias for a selection.

Overview of CMS types and functionality

The core aspect of every CMS is to provide and enable the creation of content. Similiar to the process of creating tables in a database, collections have to be created first within the CMS which define the structure of the data that can be entered. Most CMS also enable content creators to upload and manage images and/or other media types. In many CMS translations play a central role as well, making the content accessible for different audiences. Users can be managed and permissions be restricted or given.

Despite these core functionalities, CMS could be categorized as follows:

Other functionalities that is quite common include amongst others:

Comparing CMS to Backend-as-a-Service (BaaS)

BaaS provides developers with a way to link their applications to backend cloud storage and APIs, as well as features like user management, push notifications, and social networking integration. The idea is to eliminate the need for writing backend application logic and to focus primarily on the frontend by leveraging pre-built backend services. BaaS platforms typically handle server-side logic and database management, reducing the need for managing and hosting these services. This approach can, like CMS, streamline the development process, particularly for mobile and web applications.

After going through some of the functionality available in CMS and BaaS, the similarities become apparent. In addition, many CMS providers also claim rightfully so to be BaaS providers, confusing 🧐.

In essence, the main difference is the target audience: Whilst BaaS offerings usually target developers only and do not offer (m)any features for content creators / other business departments, CMS providers target developers as well as other business departments like marketing. Customizable CMS feel often like BaaS offerings PLUS an easy to use interface which can be directly used by other departments. This is usually not possible in BaaS, as these interfaces are still made for developers! You would need to write admin interfaces yourself. On the other side, BaaS usually are more developer friendly and allow for instance more database customizations and easier developer workflows than it would be possible in CMS.

To give you a rough idea, lets visually compare supabase (BaaS) with directus (CMS):

Example of defining a data model in directus
Example of defining a data model in supabase

The screenshots provide a high-level overview between both services: Supabase primarily offers a web-based database client interface, while directus appears more user-friendly for those without development experience.

Advantages for developers

As this blog posts centers around developer productivity, lets look at some of the benefits for us software developers:

  1. Focus on your core feature instead of monotonous problems: Developers can focus on business critical problems instead of writing for the millionth time user management and other ubiquitous functionality appearing in nearly every project.
  2. Ready to use APIs: APIs are provided out of the box and can be used in native mobile apps as well as web projects. This greatly increases productivity.
  3. Customizability: Despite the functionality provided out of the box, many CMS providers allow custom extensions. Overall extensibility differs from service provider to service provider, but often even custom API endpoints are supported.
  4. Empowerment: With an easy configurable content platform, business departments responsible for content creation are no longer blocked by developers and can now manage their own domain. Therefore, developers are less interrupted with recurrent coding tasks. Obviously, some restrictions might apply: The creation process of the data collections and naming should be standardized in close cooperation with the development team.
  5. Hosting / Availability: An important part of software development revolves around the question of how to make the software artifact available. This includes deployment operations and the service of hosting applications. These needs are often provided by the CMS provider, especially when opting for a managed service. Adding new features or endpoints typically doesn’t require hosting separate applications and can often be done within the existing CMS framework. However, the extent of this capability may vary depending on the specific CMS and hosting solution chosen.

With all these advantages given, lets look at how to actually choose a CMS.

Selecting a CMS

The first step before selecting a CMS is to think about your own requirements. Should the CMS be hosted, or should it be deployed in your existing application landscape? Does it have to be open-source or can it be proprietary? Every company and every team might have their own requirements, but here are some criterias to get you started.

Requirements

CMS Overview

This section provides a small overview of prominent headless Content Management Systems (CMS) in the current market. It’s important to note that this list is not exhaustive, given the vast number of available CMS. Initially, my goal was to create a comprehensive comparison spreadsheet of these offerings in relation to provided features. However, this proved impractical due to the sheer volume of features and the rapidly evolving nature of these platforms. Additionally, marketing materials often claim near-universal capabilities, making direct comparisons challenging.

Therefore, this list primarily consists on my own research of going through recommendations and partly tools that I have personally tested, particularly those with available source code.

Conclusion

The wide availability of CMS toolings is certainly beneficial for software developers. However, the process of selecting a CMS can be both overwhelming and critically important for the long-term success of a project. It’s essential to thoroughly evaluate multiple CMS options with real prototypes before making a final decision. My suggestions on how to start:

Thanks for taking the time reading this giant blog post 😃! In the next posts we will take a more detailed look on some of the CMS and how these actually work in practice. If you have questions or suggestions, don’t hesitate to contact us!

B310 Digital GmbH, c/o FLEET7, Fleethörn 7, 24103 Kiel hi@b310.de