With the raise of popularity of single-page application (SPA), we can separate front-end and back-end completely. Front-end only rely on API to communicate back-end, so that we can always change the implementation of front-end (e.g. web application, mobile application, etc) without changing the back-end.
For simple applications that do not have a complicate logic (e.g. blog), we can use a headless content management system (CMS) as a back-end. Most headless CMS provide basic features to create content and schema, this allows developer to focus on implementation on the Front-end.
To find a suitable headless CMS, I have tried many different solutions and I want to share my views on them.
First, if you want a quick comparison, you take a look at headlessCMS and a headless cms comparison sheet.
There are mainly two types of headless CMS, focus on blogging and genetics ones. Those whose focus on blogging usually include a page builder and predefined schemas. However, I don't like those. If we want to use predefined schemas, why do not we just use WordPress? After all, WordPress is the most used CMS and it can be used as a headless CMS.
There are mainly two types of headless CMS, focus on blogging and genetics ones. Those whose focus on blogging usually include a page builder and predefined schemas. However, I don't like those. If we want to use predefined schemas, why do not we just use WordPress? After all, WordPress is the most used CMS and it can be used as a headless CMS.
GraphCMS
This is the first CMS I found when I search for GraphQL headless CMS
. GraphCMS is a SaaS solution for headless CMS. User can drag and drops fields to create schema. The controls are straightforward. It provides web hooks for paid plan and you can also upload assets to it.
But I have several problems with GraphCMS.
First, it is lack of advance field types. GraphCMS only provides basic fields type like string, integer and date. While it is fine for developers, it is not enough for user. Others CMS provide field types like WYSIWYG editor, star rating, color picker and many different type. Also, you cannot set limitations on fields like required and length.
Second, the price is expensive. For a basic plan, you have 100K api operations. It may seems a lot but this means you can only have 3.3K api operations per day. Depends on how you design the site, but you probably need at least 1 query per page. Other than that, you only get 10GB asset traffic.
Lastly but not least, the page design is bad. The pages aren't responsive so you cannot view the dashboard on mobile. The color combination also feels weird for me.
I will not recommend it but you can still try out it free plan. You do not need to create a account if you use GitHub to login.
Strapi
Strapi is the most starred project on headlessCMS. Strapi is a self-hosted solution based Node.js.
It provides many different field types. You can set different limitations on fields. It has custom roles and permissions on schema. It also has a lot of plugins coming soon. It looks very promising but it is pretty bad when you use it.
The biggest problem is it is buggy. Probably because it is still in alpha. I faced that fields are not updated correctly. Also, if you use database other than mongoDB like MySQL, you will face much more errors even though on documentation they support it.
Another big problem is very difficult to update. You can to install new CLI, generate a new project and migrate it yourself, especially if you can write custom logic in JavaScript for fields. You even have to migrate the database yourself.
Directus
Directus is a self-hosted solution based on hp.
Directus provides the finest permission control among the headless CMS that I have tested. You can control down to per field instead of per schema.
It also have many field types and limitations control. You can even define the underlying type of the database.
It can transform images that you have uploaded. It also have event log on API operations.
The problems that I face are some field type does not work correctly and the image transformation is bugged. Also, it does not support GraphQL.
Cockpit
Cockpit is also a self-hosted solution based on php.
Cockpit provides different field types but it is fewer than Strapi and Directus. It has permission control. For non-public control, you have to write php yourself.
The problem that I face it the lack of documentation. The documentation is the bare minimum. You have to figure out things yourself.
Cockpit is the most bug free self-hosted solution while having decent features set.
Conclusion
There are many headless CMS solutions available. These are the decent ones that I have tested. Hope you all can find a suitable one for you.