Choosing a suitable CMS? Find out how we managed this for our client!
In the digital age, a website without a content management system, CMS for short, is indispensable. After all, this type of system offers user-friendliness and the possibility to get to work yourself. This is necessary, because with a dynamic website you will be much more successful than if you used a static website. Recently, we made a comparison between a number of content management systems (CMS) for a client. The aim of this comparison was to choose a future-proof CMS to support their web platform optimally.
The first selection of content management systems
The most important element in selecting a suitable CMS for our client was that it had to be a headless system. The market consists of a variety of headless Content Management Systems. We took a closer look at four of them. We made our shortlist based on recommendations, research, our own knowledge and a seminar we attended at the React Live Conference. At the start of our selection, our shortlist consisted of the following four CMS platforms:
- Prismic
- Strapi
- Contentful
- Sanity
A comparison of our top 4
Prismic
Prismic is a Cloud hosted content management system that allows content to be retrieved with a REST or GraphQL API. They offer automatic image optimisation, a "no server maintenance environment" and a growing ecosystem. In addition, with Prismic you enjoy many features such as an unlimited number of locales, API calls, assets, image optimisations, documents & content types with 100 GB built-in CDN space. It is possible to let one user in the free tier access Prismic. For $7/month you can have three users and for only $15 you can setup as many as seven users. If you need advanced rights and role management, you will need to buy a more expensive package costing $100/month. Finally, they also offer webhooks.
A very big advantage is that our client was already familiar and experienced with the Prismic CMS. The user interface of Prismic is rather simple, but this certainly has its advantages. Because the role management is part of a rather expensive subscription, there is a chance that users make changes that are not in the content creation type. Further optimising or personalising the Prismic environment with Third Party Plug-ins is not possible according to our observation.
The references on the Prismic website are certainly very strong. For example, Netflix, McDonalds, Raspberry Pi & Spotify are among their users and customers.
Strapi
Strapi is a open-source customizable CMS. Unfortunately, Strapi is not available as a SaaS solution, so you have to provide your own hosting. Integration with the CMS is possible based on a REST API and GraphQl API. Like Prismic, Strapi also offers webhooks and unlimited use of, for example, entries, API calls, assets, locales etc. In addition, it is possible to protect up to 3 default roles of the CMS from unauthorised access. Some other options are:
- Unlimited users
- A large community of developers to help you with possible problems
- A very flexible content structure.
An extra advantage of Strapi is that their API is adaptable in the code editor. This way, the CMS is tailored to the needs of the end user. Examples of these personalisations are: custom or extra end-points to retrieve and sort specific content as desired. Since Strapi 4, it is necessary to connect your own database to the system (only with a PostgreSQL & MySQL database and no longer with a MongoDB or MariaDB).
The User Interface that Strapi offers is, in our opinion, more intuitive and modern. There are few differences between the free community plan and the source plan which is available for $9/month.
In their portfolio there are companies such as Toyota, IBM, NASA, Walmart, Accenture, Orion health etc.
Contentful
Contentful is a more established player in the CMS market that offers a rather limited free tier with two users, up to five active users and two locales. They have an unlimited number of API calls, up to 25,000 asset records and .75 TB bandwidth. Contentful CMS can be used with REST & GraphQL. If you want to go to the next tier, you quickly pay $489/month. A high amount that is not attractive for every client. Unfortunately, this was also the reason for us not to look further into the options.
Contentful is already being used by: Danone, Atlassian, ShiSeido, Equinox, GoodRx, Staples, etc.
Sanity
We discovered Sanity through a conference we attended with some of our developers in Amsterdam (React Live). It is an open-source CMS with the ability to customise real-time content with other users. With Sanity, you can personalise data types and UI with third-party plugins and that makes this CMS very similar to Strapi. Unlike Strapi, Sanity is fully cloud-hosted. This makes the user experience easier and less experienced users can also work in this CMS without any problems. Besides this, they also offer an advanced version control, so you can follow up and review all changes when necessary. However, data retrieval is only possible using GraphQL or their own GROQ API.
Their free tier includes:
- An unlimited number of admin users
- 3 non-admin users
- An unlimited number of locales
- 100,000 API calls per month
- 5GB asset storage
- 500,000 CDN requests/month
- 10GB bandwidth/month.
Fortunately, exceeding the quota does not mean that you have to immediately scale up to the next plan. That is the advantage of Sanity's pay-as-you-go model. Depending on which quota is exceeded, Sanity charges 1 dollar per extra request.
Sanity's portfolio also includes some very nice clients such as: Netlify, Nike, Figma, Sonos, Flex, Movember, reMarkable etc.
Choosing the right CMS
In order to make the most optimal choice for our client, we took a close look at the functionalities of the abovementioned content management systems. Our client's stack works with a REST API and this made it less ideal to combine. So Sanity was not an optimal option due to the fact that they only offer GraphQL and their own API. Nevertheless, this CMS was a worthy opponent in the selection of headless content management systems. Due to the high cost, Contentful was not chosen either. The intention is to remain scalable in the future. Similarly, Prismic was also not the best choice for our client. They work with developers, marketers and copywriters. This means they would like to limit the authority of certain users.
Based on elimination, we ended up choosing Strapi. The CMS in which we find all the necessary features in an attractive unit.
Our experience with Strapi
In the meantime, we have already smoothly implemented Strapi for our client. The hosting is done through Digital Ocean. The biggest advantage that we notice is that Strapi can create very flexible content types and can thus set up very dynamic pages. The possibilities to extend or personalise your system are also practically endless. New plug-ins are also released fairly frequently on their plug-in market. When we started with Strapi, it was still in an early version of its new major release 4.0. At the moment, updating to a new version works flawlessly.
What is great for both us and the customer is that the CMS has its own CLI and backend code. This makes it possible to customise everything according to their wishes. The project structure uses the MVC pattern (Model-view-controller) and is written in Javascript/Typescript based on Koa, a backend JavaScript framework.
From our experience in retrieving the data, we have noticed that an API would work more conveniently in conjunction with GraphQL API, rather than a REST API. Why is this our opinion? Let us explain with an example:
Let's say: In a blogging application, an app should display the articles of a specific user. Such an article contains a title (text), description (text), photo (photo object) and a publication date (text). With a REST API, you address an end-point such as: https://api-url.be/blog/jens. Via this URL, you receive a JSON object containing your title, description and publication date. Do you also want to get the photo back? Then you must request this manually and adjust your endpoint. This will then look like this for the photo URL: https://api-url.be/blog/jens?populate=foto.url For 1 extra field this is still manageable, but it quickly becomes long and complicated as your content/data gets more complex. With GraphQL you have to include all fields in your query anyway, so you have more control over the JSON object you get back and your code is more readable.
Finally, Strapi has a nice extra and that is its community. The community is very active, so if you have any questions or issues, you can quickly go to the Strapi forum or their active Github page.
If you are a business and need to find the best way to get your website and content online, contact Unikoo. Our development team is happy to help you! Contact us here!