Skip to content

Instantly share code, notes, and snippets.

@ebetancourt
Last active July 15, 2024 18:28
Show Gist options
  • Save ebetancourt/62a263f543db302ca2f2dcf98ed7bcc5 to your computer and use it in GitHub Desktop.
Save ebetancourt/62a263f543db302ca2f2dcf98ed7bcc5 to your computer and use it in GitHub Desktop.
Headless CMS Head-to-Head
Name Link OpenSource Self-Hosted Multi-Site MultiLingual Headless-first Content Blocks Page Templates Visual Previews Language
Strapi Strapi ⚠️ TS/JS
Payload Payload TS
Webiny Webiny 💸 TS/JS
Keystone KeystoneJS ⚠️ TS
Apostrophe ApostropheCMS JS
Cockpit Cockpit 💸 💸 PHP
Craft CMS Craft CMS ⚠️ 🟡 PHP
TinaCMS Tina TS
Statamatic Statamic ⚠️ 🟡 PHP
WordPress WordPress.org 💸 🟡 PHP/TS/JS
⚠️Sanity Sanity Studio
⚠️React Bricks React Bricks 💸
⚠️Prismic Prismic
@ebetancourt
Copy link
Author

Notes on Specific CMSs

  • Strapi does not support multiple domains: most frequently asked questions on the Strapi website - there are work arounds with reverse-proxies, but its not officially supported
  • KeystoneJS does not have a built-in concept for multiple languages. It's on the roadmap, but for now, it would involve creating the fields for the languages manually: Multi-lingual support (translated fields) · keystonejs/keystone · Discussion #7323
  • Cockpit only supports Multilingual and Content Blocks with pro add-ons, and there is nothing for multi-site / multi-tenancy in the documentation.
  • Webiny only supports Multi-Tenancy at the "Business" and "Enterprise" levels: https://www.webiny.com/pricing
  • Sanity Studio shows up when you search for "Open Source Headless CMS" only the editor is Open Source, because it renders as part of the front-end. The actual storage engine / API is closed source
  • Sanity, Prismic, and React Bricks are all closed source solutions, just on the list to be able to compare some established hosted products.
  • WordPress with Faust.js look like a very compelling option. Faust.js creates Gutenberg blocks from your front-end React components, creating a drag-and-drop experience for your headless WordPress site.

@ebetancourt
Copy link
Author

ebetancourt commented Jul 15, 2024

Feature Notes

  • Content Blocks - All of these CMSs "support" it, but some would require more work than others. Some have built-in block concepts. Others (like Statamatic) allow you to have a custom field that is a reference (foreign key) to another piece of content, placing it as a block within your content. For example, here is how it is done in Statamatic: Building re-usable content blocks in @statamic for better SEO + efficiency - YouTube - it's not ideal, it would be better if something supported it natively, but its possible
  • Multi-site (aka Multi-tenancy) - since we are planning to render the site statically server-side, technically ANY of them will work - but this could impact live previews, visual editing, and completely closes off the option of having client-side rendered content, so ideally we should have it.
  • Headless First - the CMSs marked 🟡 include a front-end as well. I thought it would be worth it calling it, since this might impact visual editing and previews
  • 💸 anything marked with this icon requires either a paid plug-in OR only comes with the premium version (examples: Multi-site is only available with Webiny Business / Premium, Multi-Lingual WordPress requires the WPML Plugin
  • Open Source - items marked ⚠️ are "source available" - they are a proprietary product, sold as runnable code, but has licensing limitations. Items marked ⛔ are closed-source products only available as hosted SaaS Products.
  • Closed Source, hosted SaaS CMSs have a ⚠️ before their name

@ebetancourt
Copy link
Author

ebetancourt commented Jul 15, 2024

Reviewing features, I think the first 3 to look at are:

  • Payload
  • Apostrophe
  • WordPress

☝️ These three options seem like they hit everything we are looking for. WordPress has the added option of being what is currently in use, the Marketing Team already knows it, and content migration should be easier.

If we want to look at more options, I would next suggest

  • Webiny
  • Statamatic
  • Strapi

Although Strapi was the front-runner coming into this, its oddities regarding multi-site and the fact that the domain and the Admin are tightly coupled knocked it out of the running. Since there IS a work-around, we can still consider it

@ebetancourt
Copy link
Author

The features I prioritized were:

  1. Open Source / Source-Available (Open Source strongly preferred)
  2. Multi-lingual Support
  3. Multi-site support
  4. Content Block editing support / experience, visual editing, visual preview

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment