Node.js CMs Comparison

Overview

The below comparison matrix shows many of the detailed differences between several of the most popular Node.js based CMS and application frameworks. Needless to say, take this with a grain of salt and only use this content to short list the option(s) that best align with your business requirements. 

With all complex systems, "the devil is in the details" so its always preferable to perform a POC on one or more of your top choices before making a final decision. A week spent on a POC can save months of throw away work in potential situations where you don't learn about the shortcomings of a system until you are deep into the implementation phase of your project. In other words, don't let the 80/20 rule get the best of you!

Supported Use Cases Info
SonicJs
KeystoneJs
Ghost
Apostrophe
Build a Quick Simple WebSite
Build a Complex WebSite
Build a Blog
Build a Quick Simple Web Application
Build a Complex Web Application
Headless CMS for Simple Mobile App
Headless CMS for Complex Mobile App
Rapid Prototyping Website/App
Database Support
SonicJs
KeystoneJs
Ghost
Apostrophe
MySQL
PostgreSQL
SQLite
MariaDB
Microsoft SQL Server
Oracle
WebSQL
MongoDB
CockroachDB
SAP Hana
sql.js
Content Types Info
SonicJs
KeystoneJs
Ghost
Apostrophe
Code Driven Content Types Info
UI Driven Content Types Info
Content Type Relationships Info
Content Type CRUD Info
Content Type Form Generation Info
Module Association Info
Field Types Info
SonicJs
KeystoneJs
Ghost
Apostrophe
Text Box
Text Area
Number
Password
Checkbox
Select Checkboxes
Select List
Radio
Button
Email
Url
Phone Number
Tags
Address
Date/Time
Day
Time
Currency
Survey
Signature
HTML Element
Content
Columns
Field Set
Panel
Table
Tabs
Well
Hidden
Container
Data Map
Data Grid
Edit Grid
Tree
reCaptcha
Resource
File
Nested Form
Custom
Existing Resource Fields
Layout Management
SonicJs
KeystoneJs
Ghost
Apostrophe
UI Driven Layout Builder Info
Code Driven Layout Builder Info
Page Builder
SonicJs
KeystoneJs
Ghost
Apostrophe
Manage Modules in Columns Info
CSS Management Info
Style Management Info
Reuse All Content Info
Desktop / Tablet / Mobile Preview Info
Page Caching Info
Page Template Builder
SonicJs
KeystoneJs
Ghost
Apostrophe
Manage Reusable Templates Info
Template Zones Info
Module / Plugin Development
Bolt-on Modules Info
Core Altering Modules Info
Module Altering Modules Info
Emails - Transactional Info
Emails - Newsletter Info
Module List
SonicJs
KeystoneJs
Ghost
Apostrophe
Text Info
Alerts Info
Blog Info
Button Info
Code Snippets Info
Comments Info
Forms (Contact / Request a Quote / Newsletter Signup / etc) Info
FAQ Info
Feature Box Info
Gallery Info
Google Analytics Info
Header Info
Html Info
Image Info
Keep Alive Info
Menu Info
Shortcodes Info
Title Info
Video Info
Media Management
SonicJs
KeystoneJs
Ghost
Apostrophe
Bulk Upload Images / Assets Info
Image Processing Info
S3 / Cloudinary Integration Info
Hooks
SonicJs
KeystoneJs
Ghost
Apostrophe
Data Integration Points Info
Event Integration Points Info
Form Builder
SonicJs
KeystoneJs
Ghost
Apostrophe
Visual Form Builder Info
Data Sources Info
Form Validations Info
Headless
SonicJs
KeystoneJs
Ghost
Apostrophe
GraphQL
Security
SonicJs
KeystoneJs
Ghost
Apostrophe
User Management
Role Management
Session Management
Passport Integration Info
Themes
SonicJs
KeystoneJs
Ghost
Apostrophe
Theme Management
Theme Switching Info
Bootstrap 4 Support
Bootstrap 5 Support
Backup/Restore
SonicJs
KeystoneJs
Ghost
Apostrophe
Backup Database Info
Restore Database Info
Database-to-Database Migration Info
Remote Connection Info

SonicJs Review

SonicJs is a web content management system, enterprise application framework, headless cms, hybrid CMS focused increasing designer/developer productivity by providing advance time saving features while allowing the developer to maintain full control of the final output.

KeystoneJs Review

KeystoneJs is a framework that provides developers with a foundation on which to build backends for custom websites and applications . Keystone is a "bring your own front end" or headless style CMS that provides a simple admin UI and GraphQL API. Keystone is highly developer centric and highly flexible. 

One thing to be clear about is that Keystone is not a web content management system or anything even remotely related to a "website builder" similar to Wordpress and the like. If you are looking for a platform to quickly crank out a website, Keystone isn't it. If you are looking for a flexible backend for your project, regardless of it's level of complexity, Keynote is certainly a viable option.

I see Keystone as more of a framework for developing web applications than building websites. Sure, there can be a lot of overlap in web apps and websites but I wouldn't see myself using Keystone if I was building a customer facing website, regardless of the requirements. You'd quickly come to the conclusion that you are reinventing the wheel and jump ship before long.

Simply put, on the spectrum between simple/flexible to powerful/complex, Keystone most certainly sits on the simple/flexible side. That's not a bad thing if it meets your needs. 

One minor gripe I have with KeystoneJs' marketing is that they do portray their tool as being a fit for building a "simple blog, to complex multi-brand site networks". Again if you are building a website of any complexity, keystone isn't the best tool unless you like to spend hundreds of hours writing code that replicates what most core web content management systems do. I can crank out a great looking, fully featured marketing website in Wordpress in a day. It would take me several times as long to do the same in KeystoneJs. 

Pros

  • Popular, good ecosystem
  • Great documentation
  • Support various databases thru Prism

Cons

  • A new project using Keystone is overly barebones
  • Significant learning curve
  • Highly limited compared to full fledged web content management systems 

Conclusion

All in all, Keystone is a great low-level framework that can help save you time in your project. Its definitely worth a place on your shortlist for a POC if you are in need of a data driven backend framework.

Ghost Review

Ghost is a Node.js based CMS geared toward professional bloggers or companies wanting a fairly simple blog. After reviewing their marketing website at https://ghost.org/ one might come to the conclusion that this is a great, fully featured blogging system, possibly event a viable option to Wordpress. They do after all, have a handful of larger clients using the product and great marketing. But does it live up to the self prescribed hype?

After installing Ghost locally, my first impression was very good. The dashboard looks great and is super easy to navigate. The default blog/website has enough starter content to give you a feel for what Ghost can do out of the box.

My biggest disappointment came fairly quickly when I tried to create a custom page. I was surprised by the lack of page building capabilities. In Ghost, pages are very similar to posts, so adding columns or a more advanced layout out of the box is not possible. I was also disappointed that after I uploaded an image, I could not re-use it. In fact, I am unable to reuse any content. 

So if I wanted to create a common call to action at the bottom of all of my site pages, Ghost is not capable of doing this without custom development. Even creating a simple "contact us" form, a must have for any blog or website, requires custom coding. Sorry, but even as an experienced full stack web developer, I don't want to spend my development time coding such basic features required by nearly 100% of all websites in existence.

Pros

  • Easy quick start
  • Clean, great looking blog out of the box
  • Very easy to create new posts/pages
  • Good set of content monetization tools
  • Good set of SEO capabilities for social sharing
  • Newsletter management
  • Email open tracking
  • Long list of supported integrations
  • Good set of downloadable themes
  • Great documentation

Cons

  • Supports surprisingly limited set of common website use cases out of the box.
  • Page builder is surprisingly limited
  • Can't refuse uploaded assets (images/videos)
  • Requires custom coding for even a simple blog. Not suitable unless you are a developer/designer
  • No concept of content types - everything is a "blog post"
  • Only supports MySQL and SQLite for data storage
  • Paid subscription is relatively pricey, especially as your audience grows
  • Ghost is a company using "open source" as a marketing tactic. They are clearly a profit driven company.
  • No "free forever" commitment. Ghost may convert to closed source at any time based on public comments they have made.
  • No central media manager or image resizing
  • Limited hooks
  • REST only, no GraphQL
  • No backup/restore

Conclusion

I really wanted to like Ghost and my first few minutes after getting it up and running locally where really positive. However, the deeper I got into the product to more I realized that this may be a product with awesome marketing that simply doesn't live up to its own hype. I'm not a fan of delegating everything to a third party integration. I think any CMS should have its own tried and true foundation and then integrate with third party tools for specialized needs, but that's just my opinion.

I have a strong aversion to PHP and have a laundry list of things that I don't like about Wordpress, but if I needed to create a blog style website and SonicJs wasn't an option, I'd pick Wordpress over Ghost in just about any situation that I can think of. I'm probably being overly harsh on Ghost as they haven't made the "free forever" commitment and I feel that they are using the open source concept as a marketing tactic.

Anyway, even thought its not my cup of tea, it is popular for a reason. So if you are a developer or designer and the limitations mentioned above are not show stoppers for you, you might want to give it a try. 

Apostrophe Review

Apostrophe CMS is more of a developer framework than a full fledged CMS. Out of the box, you are only be able to add super basic pages. In order to do anything of any real interest, you need to write code to leverage Apostrophe's API. 

The documentation is a bit lacking in terms of examples, but it does a decent job of explaining the core concepts. The getting started process seems like it could be streamlined, which was surprising given that Apostrophe has been around since 2013. The initial backend UI and editing capabilities are pretty lackluster as they are very vanilla. By default you can add text, images and videos to a page and that's it. 

What I do like about Apostrophe is that is appears to be highly flexible and supports more complex data models than many of the Node.js based CMS alternatives out there. The UI form generation is quite limited and I suspect that you would have to roll your own UI for most business applications. Even a simple contact form requires significant coding.

You are locked into using nunchucks as a templating engine, which seems very outdated at this point in time. Most Node.js frameworks all seem to be using Handlebars or another similar option.

The tagging system allows you to tag images and files but nothing else out of the box, which seems like an area where Apostrophe is perhaps a little more opinionated than it should be. It would be better if site admins could create hierarchical collections of tags and assign them to whatever content type they like.

I really like that Apostrophe appears to be adhering to the core open source principals and not using open source as a bait and switch marketing technique. It appears that they do charge for optional hosting but the pricing info is not readily available on their website. They do have an enterprise version of their product that includes hosting, support, a warranty and the ability to manage multiple sites from a single dashboard which I think is a very fair way for an open source project to generate revenue.

Given that Apostrophe has been released since 2013, I was really surprised to see such a limited gallery of websites using Apostrophe. Nearly all of the websites listed on their "success stories" page seem to be small businesses or startups.

There are no pre-built website templates, so you are on your own there. It would be nice to have a default Bootstrap starter template when you first install the product locally.

Pros

  • Highly flexible
  • Support custom content types and relationships
  • Internationalization
  • Stable, initially released in 2013

Cons

  • Coding required, near zero functionality out of the box
  • Significant learning curve
  • A developer only tool, most front end developers and designers would likely find it overwhelming
  • Only supports MongoDB
  • Fixed set of user roles
  • REST only, no GraphQL
  • No Headless UI (No Swagger)
  • Based on websites using Apostrophe, it doesn't appear to have gained much traction since it's 2013 release
  • Limited use cases and audience

Conclusion

Overall I really do like Apostrophe for what it does. Given the other Node.js based CMS alternatives, I am scratching my head a bit in terms of the product positioning and what type of project/website would be a great fit here. I have much respect for what the authors of this CMS have accomplished, I just have a hard time understanding what kind of developer would find this to be highly appealing (again given the more full featured alternatives that exist). 

With all that said Apostrophe is certainly a solid contribution to the Node open source community and worth a further look if you searching for a highly flexible, non-opinionated foundation for your upcoming project.