Node.js CMs Comparison
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!
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.