Exploring Open Source Content Management

Over the last few years I have created a host of small websites that need intuitive content authoring at a low cost. Contentful has been my go to solution, however it always bugged me that I am tying these websites to a paid service. This led me to think about the interoperability of applications and hosting and to investigate open source content management.

The first thing I found is that Contentful and GraphCMS are quite similar and seem to serve as the standard that an open source headless CMS can be compared to. Both of these are paid services with a rich and intuitive authoring interface, powerful APIs, and come fully featured. You can do complex, relational content modeling along with responsive asset management and fully featured rich text editing.

When looking for a similar solution on the open source side, the first options that was suggested to me was Wordpress and Ghost. Both of these CMS options are great for what they are made to do, but they were not designed for complex, relational content modeling.

I then explored SimplaJS and NetlifyCMS. The interesting thing about these options is that they are serverless. This simplifies infrastructure, since no database or independent hosting solution is required, at the cost of scalability. All of your content, including images, are stored in your code repository, and your content API essentially turns into requesting static files. This is perfect for small scale needs, but has definitive limits on content size. Also, there's no fully featured content API, just requests to static files.

This led me to Strapi. This CMS is very similar to Contentful and GraphCMS, requires a database, and can be hosted just about anywhere. It is implemented completely in JavaScript making it easily extensible and has a simple content API. While the authoring interfaces lack some of the polish of Contentful and GraphCMS, there are other concepts that it adds that those services do not have. For example, it has the concept of 'components' which are essentially chunks of data that can get reused and reordered, allowing for flexible content authoring. The major limitation of Strapi is that it's rich text editor is simply a markdown editor. While a fully featured rich text editor is in the works, this is a pretty major limitation.

The next stops on the journey include Laravel, Hasura, and KeystoneJS. While I really like Strapi and am considering contributing to the project in order to help with the rich text editor, I want to continue my exploration and see what other options exist.

Popular Posts