Some time ago, in a public company that I worked for, noticeable in the Russian market, the question arose of using headless cms. Among the many
implementations it was necessary to choose one. This is a story about how I shaped my selection criteria, how I analyzed cms, and how this analysis led me to think that I should write my own. Review 14 headless cms under the cut.
What is a headless CMS?
Although the term is not new, for some reason this topic is covered very little in the Russian-language Internet. So, according to
Wikipedia :
A CMS , or a CMS , is a back-end repository that makes it possible to use the system.
Headless content management system , or headless CMS, is a server-based content management system (CMS), which is initially a content repository and provides access to content through the RESTful API for display on any device.
In other words, headless cms is a concept, a kind of special type of cms-app, according to which cms is responsible only for managing “clean” content. This allows you to separate the data layer, which is managed in cms, from the display layer, which is controlled by the client application. Content is distributed in a universal format, usually in JSON, and this makes it possible to manage simultaneously the website, the mobile application and any devices connected to the Internet.
More about the pros and cons of this concept can be found in this
article , or
this , or again in an
article on Wikipedia .
')
Context immersion
To determine the search criteria and understand which headless cms is better than others, I had to answer the question - what is the best in what? What tasks should it solve and how?
To demonstrate my then train of thought, I came up with a typical task and solved it using one of the headless cms. And although in reality everything was a little different, such a narrative format reflects the essence more concisely and better reveals the topic of headless cms.
So, imagine that a task comes to the development. On the site you need to implement a new section in which users will read reviews for films.
Conditions are:
- at the moment, you only need to display the film’s name, poster, director’s name and review text, but in the future the structure will become more complicated, information will appear about the training camp, actors, etc .;
- A person without a technical background should be added and modified by a content manager, and for this purpose the development resource should not be used;
- This functionality should be disabled, i.e. need to implement feature toggle;
- Before publishing the content, the content manager should be able to see in the test environment what the edits will look like.
These are requirements that came from an internal customer. From the development side, there is a technical vision for implementation, namely:
- the customer should not be able to shoot his knee, i.e. the content manager should not break anything, even if he wants. It should only edit what the developers provided;
- should be able to manage versions and roll back in case anything happens;
- it is not known what additional functionality will appear in the future, which means that it should be easy to complicate or change the section;
- from the security side: the system should be on our server, and not in a foreign cloud, i.e. should be able to deploy on-premises.
Well, the task is clear. I turn to the decision.
I will use Any JSON CMS, this is one of the headless cms. I note that at the moment it does not meet all the requirements described above. For example, the content manager will not be able to see in the test environment what the edits will look like. However, all the advantages and disadvantages will be visible later. Now I strive to “touch” a typical scenario of working with any headless cms.
The first thing to do is to describe the models. The model answers the question, what should the content entity look like? What is its structure? In essence, this is a protocol for interaction between cms and a client application. In our case - a review for the film - the object contains:
- 3 required properties: film title, movie poster, review text;
- 1 optional property: the “director” object, which in turn contains 2 required properties: first name and last name.
As a JSON Schema, the review model looks like this:
{ type: 'object', required: ['movieName', 'moviePoster', 'reviewText'], additionalProperties: false, properties: { movieName: { type: 'string', minLength: 1, maxLength: 300, }, moviePoster: { type: 'string', description: 'URL to file', }, movieProducer: { type: 'object', required: ['name', 'surname'], additionalProperties: false, properties: { name: { type: 'string', maxLength: 100, minLength: 1 }, surname: { type: 'string', maxLength: 100, minLength: 1 }, }, }, reviewText: { type: 'string', minLength: 1, maxLength: 3000, }, }, }
You also need to implement feature toggle, the model in the form of JSON Schema looks like this:
{ type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, }
When there is an understanding of how models should look, you can create them in Any JSON CMS.
Immediately create content entities, i.e. content itself, based on models. One bogus review and feature toggle essence.
To integrate the client application with cms, you need an API key. I generate it in the appropriate section cms.
Now everything is ready for the implementation of functionality in the client application and integration with cms. The client application can be any website or mobile application, or both, written on anything. As an example, I am implementing the functionality on the SPA website at React. In fact, we take data with the already known, fixed structure from cms and display it as we want.
import React, { Component } from 'react' import { Accordion, AccordionItem, AccordionItemTitle, AccordionItemBody, } from 'react-accessible-accordion' import 'react-accessible-accordion/dist/fancy-example.css' const apiUrl = 'https://api.anyjsoncms.com'
Everything. Now the content manager can safely manage reviews, and it is now possible to enable and disable functionality using feature toggle.
To show reviews to films is a simple example, I deliberately cited it in order not to drown in details, but only to demonstrate the principle. In fact, features can be an order of magnitude more complicated. These can be interface elements, product catalogs, complex widgets, landing pages, form generators, posts, etc. Also, in this example, cms only distributes information, but most headless cms provide a CRUD API, which makes it possible, for example, to process forms, and generally manipulate entities as you like. In general, the idea of ​​headless cms is just to provide freedom and convenience in the implementation of an arbitrarily complex protocol to transfer control to cms anything and as required.
Criteria for selection and analysis of headless cms
After I had an understanding of what tasks would be solved with the help of headless cms and how, I singled out the criteria and began to study the systems. Now according to the site
headlesscms.org there are 54 cms. Analyzing them all is quite a laborious process, so I identified 14 most popular, visible and discussed systems: Any JSON CMS, Contentful, Strapi, GraphCMS, Squidex, Butter CMS, Cloud CMS, ockpit, Cosmic JS, Directus, Kentico Cloud, Netlify CMS , Prismic, Ghost.
The results are more convenient to study in the form of a
table . But I will duplicate here.
Any JSON CMS
Site | anyjsoncms.com
|
Description | JMS to any app Headless CMS |
The target audience | Digital teams |
Price per month | Alpha version, no price |
Commercial support | not |
Twitter followers | 0 thous. |
Github stars (if open source) | not open source |
Open source solution | not |
On-premises software | not |
Cloud service | Yes |
GraphQL API | not |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | not |
It is possible to create nested models (for example, an object contains another object) | Yes |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | not |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | Yes |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | not |
CRUD API for models | not |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | not |
Publishing System: Draft / Publish | not |
The possibility of delayed publication | not |
Fixing model versions | not |
Committing Content Entity Versions | not |
Git-like versioning system | not |
Project management | Yes |
Image management | Yes |
File management | Yes |
Webhooks | not |
user management | not |
User Access Management | not |
Additional Information | Only alpha version available. |
Contentful
Site | contentful.com |
Description | Update once and publish everywhere, so teams build digital products faster. |
Purpose | Content management in multi-channel world |
The target audience | Digital teams, enterprises |
Price per month | cloud - free, $ 39, $ 879, hidden price for enterprise |
Commercial support | Yes |
Twitter followers | 33.6 thousand |
Github stars (if open source) | not open source |
Open source solution | not |
On-premises software | not |
Cloud service | Yes |
GraphQL API | Yes |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | Yes |
It is possible to create nested models (for example, an object contains another object) | not |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | not |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | not |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | Yes |
CRUD API for models | Yes |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | Yes |
Publishing System: Draft / Publish | Yes |
The possibility of delayed publication | not |
Fixing model versions | Yes |
Committing Content Entity Versions | Yes |
Git-like versioning system | not |
Project management | Yes |
Image management | Yes |
File management | Yes |
Webhooks | Yes |
user management | Yes |
User Access Management | Yes |
Strapi
Site | strapi.io |
Description | Manage your content. Distribute it anywhere. |
Purpose | Build powerful content API with no effort |
The target audience | Profesional developers |
Price per month | on-premiss - free |
Commercial support | Yes |
Twitter followers | 2,3 thousand |
Github stars (if open source) | 11.1 thousand |
Open source solution | Yes |
On-premises software | Yes |
Cloud service | not |
GraphQL API | Yes |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | not |
It is possible to create nested models (for example, an object contains another object) | not |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | not |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | not |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | Yes |
CRUD API for models | not |
API access tokens support | not |
Differentiation of rights to access to the API by access token API | Yes |
Publishing System: Draft / Publish | not |
The possibility of delayed publication | not |
Fixing model versions | not |
Committing Content Entity Versions | not |
Git-like versioning system | not |
Project management | No, but you can deploy a separate instance of cms |
Image management | Yes |
File management | Yes |
Webhooks | No, but it can be implemented via lifecycle callbacks |
user management | Yes |
User Access Management | Yes |
Additional Information | Studied the alpha version, there were bugs while saving the model |
GraphCMS
Site | graphcms.com |
Description | Bring content to any platform |
Purpose | Content infrastructure for your digital product |
The target audience | Profesional developers, agencies, enterprises |
Price per month | cloud - free, $ 49, $ 149, $ 499, hidden price for enterprise |
Commercial support | Yes |
Twitter followers | 2.4 thousand |
Github stars (if open source) | not open source |
Open source solution | not |
On-premises software | not |
Cloud service | Yes |
GraphQL API | Yes |
REST API | not |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | not |
It is possible to create nested models (for example, an object contains another object) | not |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | not |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | yes, either does not allow to change the model, or a change leads to data loss after confirmation |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | Yes |
CRUD API for models | not |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | Yes |
Publishing System: Draft / Publish | Yes |
The possibility of delayed publication | not |
Fixing model versions | not |
Committing Content Entity Versions | not |
Git-like versioning system | not |
Project management | Yes |
Image management | Yes |
File management | Yes |
Webhooks | Yes |
user management | Yes |
User Access Management | Yes |
Squidex
Site | squidex.io |
Description | Squidex enables you to manage your web site. |
Purpose | It is a little bit easier. |
The target audience | Profesional developers |
Price per month | cloud - free, $ 19, $ 49, $ 99; on-premises - free |
Commercial support | not announced |
Twitter followers | 0 thousand |
Github stars (if open source) | 0.5 thousand |
Open source solution | Yes |
On-premises software | Yes |
Cloud service | Yes |
GraphQL API | Yes |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | not |
It is possible to create nested models (for example, an object contains another object) | not |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | you can specify single content or multiple content, a specific number can not be specified |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | not |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | Yes |
CRUD API for models | not |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | Yes |
Publishing System: Draft / Publish | Yes |
The possibility of delayed publication | Yes |
Fixing model versions | not |
Committing Content Entity Versions | Yes |
Git-like versioning system | not |
Project management | Yes |
Image management | Yes |
File management | Yes |
Webhooks | Yes |
user management | Yes |
User Access Management | Yes |
Butter cms
Site | buttercms.com
|
Description | Add a blog or CMS to your site in minutes. Drop-in our Headless CMS and get back to more interesting problems. |
Purpose | Drop our API-based CMS into any tech stack in minutes. |
The target audience | Startups, agencies, enterprises |
Price per month | cloud - $ 24, $ 83, $ 166, hidden price for enterprise |
Commercial support | Yes |
Twitter followers | 0.4 thousand |
Github stars (if open source) | not open source |
Open source solution | not |
On-premises software | not |
Cloud service | Yes |
GraphQL API | not |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | not |
It is possible to create nested models (for example, an object contains another object) | not |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | not |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | not |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | not |
CRUD API for models | not |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | no (and not required, since there is only read) |
Publishing System: Draft / Publish | Yes |
The possibility of delayed publication | not |
Fixing model versions | not |
Committing Content Entity Versions | Yes |
Git-like versioning system | not |
Project management | Yes |
Image management | Yes |
File management | Yes |
Webhooks | Yes |
user management | Yes |
User Access Management | Yes |
Cloud CMS
Site | cloudcms.com
|
Description | Easy for Content Editors + Powerful for Developers |
Purpose | CMS for business critical applications |
The target audience | Enterprise |
Price per month | $ 200, $ 800, $ 1200 |
Commercial support | Yes |
Twitter followers | 0.3 thousand |
Github stars (if open source) | not open source |
Open source solution | not |
On-premises software | Yes |
Cloud service | Yes |
GraphQL API | Yes |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | Yes |
It is possible to create nested models (for example, an object contains another object) | Yes |
It is possible to combine models (for example, the field can be either a string or a number) | not |
It is possible to specify how many content entities can be created based on a specific model. | not |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | not |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | Yes |
CRUD API for models | Yes |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | not |
Publishing System: Draft / Publish | Yes, you can enable it in the settings |
The possibility of delayed publication | not |
Fixing model versions | Yes |
Committing Content Entity Versions | Yes |
Git-like versioning system | Yes |
Project management | Yes |
Image management | Yes |
File management | Yes |
Webhooks | Yes |
user management | Yes |
User Access Management | Yes |
Additional Information | Very powerful, there are all the chips of the enterprise level, and even more. Due to the abundance of functionality, you need a little more time to figure it out. |
ockpit
Site | getcockpit.com
|
Description | Simple Content Platform |
Purpose | Add content management functionality to any site - plug & play / headless / api-first CMS |
The target audience | Digital teams |
Price per month | on-premises - free |
Commercial support | Yes |
Twitter followers | 0.7 thousand |
Github stars (if open source) | 3,5 thousand |
Open source solution | Yes |
On-premises software | Yes |
Cloud service | not |
GraphQL API | No, but implemented through the installation of add-on |
REST API | Yes |
The content entity is created based on the model. | Yes |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | yes, using repeater |
It is possible to create nested models (for example, an object contains another object) | Yes |
It is possible to combine models (for example, the field can be either a string or a number) | yes, using repeater |
It is possible to specify how many content entities can be created based on a specific model. | No, it is possible to create only singleton models |
Managing detected conflicts between the model and the content entity (for example, if you change the model so that an existing content entity does not satisfy these changes, does the system know how to solve such situations?) | not |
Read API for content entities | Yes |
Ceate, update, delete API for content entities | Yes |
CRUD API for models | read and update only |
API access tokens support | Yes |
Differentiation of rights to access to the API by access token API | yes, through collections permssions settings |
Publishing System: Draft / Publish | not |
The possibility of delayed publication | not |
Fixing model versions | not |
Committing Content Entity Versions | Yes |
Git-like versioning system | not |
Project management | No, but you can deploy a separate instance of cms |
Image management | Yes |
File management | Yes |
Webhooks | Yes |
user management | Yes |
User Access Management | yes through group configuration |
Additional Information | Decent opensource solution. Some settings are set through the configuration, rather than through the interface. For example, to configure the type of repeater, you need to study the documentation and prescribe options via JSON. Written in PHP. |
Cosmic js
Site | cosmicjs.com
|
Description | Modern Content Management Solution. The leading CMS for modern digital teams. |
Purpose | The Cosmic JS Headless CMS gives you the job done. |
The target audience | Digital teams, enterprice |
Price per month | $ 44, $ 179, $ 449, $ 359, $ 719 |
Commercial support | Yes |
Twitter followers | 2.8 thousand |
Github stars (if open source) | not open source |
Open source solution | not |
On-premises software | Yes |
Cloud service | Yes |
GraphQL API | Yes |
REST API | Yes |
The content entity is created based on the model. | Yes, but the content creator can add any fields, even if they are not in the model. Those. Model -> content is not strict. |
You can create your own models | Yes |
It is possible to create your models via UI | Yes |
A model may contain a link to another model. | Yes |
It is possible to combine links (for example, a model can refer to either of the two models) | No, only two options are available:- link to any Object
- a reference to the Object of one particular Object Type
|
( ) | Yes |
( , ) | not |
| not |
(, , , ?) | not |
Read API | Yes |
Ceate, update, delete API | Yes |
CRUD API | Yes |
API access tokens | Yes |
API API access token | , read write |
: Draft/Publish | Yes |
| Yes |
| not |
| Yes |
Git | not |
Project management | Yes |
| Yes |
| Yes |
Webhooks | Yes |
| Yes |
| Yes |
Directus
Site | directus.io |
Description | Premium Open-Source Software For Any Data-Driven Project |
Purpose | Directus is an open-source suite of software that provides an instant API wrapper for SQL databases and an intuitive Admin App for non-technical users to manage that content. |
| Digital teams, enterprice |
| on-premises — free |
| Yes |
twitter | 19,4 |
Github stars ( open source) | 3,8 |
Open source | Yes |
On-premises software | Yes |
Cloud service | , - |
GraphQL API | not |
REST API | Yes |
| Yes |
| Yes |
UI | Yes |
| Yes |
( ) | not |
( ) | , group, |
( , ) | not |
| , singleton |
(, , , ?) | not |
Read API | Yes |
Ceate, update, delete API | Yes |
CRUD API | Yes |
API access tokens | , , , |
API API access token | , |
: Draft/Publish | not |
| not |
| not |
| Yes |
Git | not |
Project management | , cms |
| Yes |
| Yes |
Webhooks | , , php |
| Yes |
| Yes |
Additional Information | «Something is wrong with this instance's server or database.» . . 10 . — 5 . , , . . - . , Directus Stable, .. . |
Kentico Cloud
Site | kenticocloud.com
|
Description | Stop Your Content Friction. Collaborate and deliver engaging omnichannel experiences with a CMS that's built for content strategists and developers. |
Purpose | Create engaging personalized experiences across any device with a next-generation headless CMS. |
| Digital teams, agencies, enterprice |
| cloud — 0$, 299$, 999$, hidden price for enterprise |
| Yes |
twitter | 1 |
Github stars ( open source) | open source |
Open source | not |
On-premises software | not |
Cloud service | Yes |
GraphQL API | not |
REST API | Yes |
| Yes |
| Yes |
UI | Yes |
| Yes |
( ) | Yes |
( ) | , Content Type Snippets, , snippet snippet |
( , ) | not |
| not |
(, , , ?) | not |
Read API | Yes |
Ceate, update, delete API | , professional |
CRUD API | , beta , professional |
API access tokens | , professional |
API API access token | , API token , |
: Draft/Publish | Yes |
| Yes |
| not |
| Yes |
Git | not |
Project management | Yes |
| Yes |
| Yes |
Webhooks | Yes |
| Yes |
| Yes |
Additional Information | , contentfull. . |
Netlify CMS
Site | netlifycms.org
|
Description | Open source content management for your Git workflow. Use Netlify CMS with any static site
generator for a faster and more flexible web project
|
Purpose | Get the speed, security, and scalability of a static site, while still providing a convenient editing interface for content. |
| Profesional developers |
| on-premises — free |
| |
twitter | 3,6 |
Github stars ( open source) | 7,4 |
Open source | Yes |
On-premises software | Yes |
Cloud service | not |
GraphQL API | not |
REST API | , git |
| Yes |
| Yes |
UI | , yml |
| Yes |
( ) | not |
( ) | , object , |
( , ) | not |
| not |
(, , , ?) | not |
Read API | not |
Ceate, update, delete API | not |
CRUD API | not |
API access tokens | not |
API API access token | not |
: Draft/Publish | , editorial_workflow on, GitHub |
| not |
| Yes |
| Yes |
Git | Yes |
Project management | , cms |
| , , , |
| , , , |
Webhooks | not |
| , cms , git ( bitbucket, github, gitlab .) |
| , git |
Additional Information | — 2.5.1. CMS — . , git . |
Prismic
Site | prismic.io |
Description | One CMS Backend for all your Websites & Apps |
Purpose | CMS for apps, e-commerce, editorial websites, corporate websites. Enables marketing teams to create highly targeted acquisition campaigns. |
| Digital teams, enterprice |
| cloud — 0$, 7$, 15$, 100$, 500$ |
| Yes |
twitter | 12,1 |
Github stars ( open source) | open source |
Open source | not |
On-premises software | not |
Cloud service | Yes |
GraphQL API | , alpha |
REST API | Yes |
| Yes |
| Yes |
UI | Yes |
| Yes |
( ) | Yes |
( ) | , «group — a repeatable group of fields», , group group |
( , ) | not |
| , singleton |
(, , , ?) | , .. , |
Read API | Yes |
Ceate, update, delete API | not |
CRUD API | not |
API access tokens | Yes |
API API access token | ( , .. read) |
: Draft/Publish | Yes |
| Yes |
| not |
| Yes |
Git | not |
Project management | Yes |
| Yes |
| Yes |
Webhooks | Yes |
| Yes |
| , Professional |
Ghost
Site | ghost.org
|
Description | Ghost is a fully open source, adaptable platform for building and running a modern online publication. We power blogs, magazines and journalists from Zappos to Sky News. |
Purpose | Powerful platform for creating an online blog or publication |
| Professional bloggers, serious enterprise publishers |
| on-premises — free; cloud — 29$, 79$, 199$ |
| Yes |
twitter | 24,1 |
Github stars ( open source) | 28,7 |
Open source | Yes |
On-premises software | Yes |
Cloud service | Yes |
GraphQL API | not |
REST API | Yes |
| not |
| not |
UI | not |
| not |
( ) | not |
( ) | not |
( , ) | not |
| not |
(, , , ?) | not |
Read API | Yes |
Ceate, update, delete API | not |
CRUD API | not |
API access tokens | Yes |
API API access token | not |
: Draft/Publish | Yes |
| Yes |
| not |
| not |
Git | not |
Project management | Yes |
| Yes |
| not |
Webhooks | Yes |
| Yes |
| Yes |
Additional Information | wordpress, editing tool |
findings
headless cms : , , git , .
. , . , , , , , , — . :
, , . Cloud CMS, .
Conclusion
, headless cms. , . Any JSON CMS.
— git . , , “” .