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

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