ApostropheCMS: The Best Node.js CMS
A CMS built from the ground up with Express and Node.js
You love the Node.js ecosystem and so do we. Here are some of the features the platform unlocks for Node.js developers.
Low-code development: ApostropheCMS delivers a complete admin UI
There's no need to build out your own storage layer, input sanitization, and admin UI to manage your content. Apostrophe's "pieces" cover reusable content like articles, products, events and profiles, while "pages" cover more traditional webpages. Just specify the fields you want, and ApostropheCMS automatically provides a complete, customizable admin UI, along with matching REST API routes. You can customize the experience further from there using some of these core concepts:
- "Relationship" fields allow developers to quickly express how content types are connected and give editors a simple way to populate those relationships.
- "Array" fields allow content with its own sub-properties to be easily nested and managed as part of a larger document... again, with an automatic UI. Want a simple table-like UI? Prefer a separate editing dialog for bigger items? Either way, ApostropheCMS includes it right in the box.
- "Area" fields support in-context editing right on the page, allowing editors to string together "widgets" such as our rich text widget, powered by the open source TipTap editor. Developers can quickly build their own widgets, and we provide great starting points for images, video, multicolumn layout and more.
- "Piece pages" provide a simple, optional way to navigate, filter and paginate pieces and render a full page experience for each one. Need to customize the URL structure in a more elaborate way? Check out dynamic routing with dispatch() and dispatchAll().
Extensibility: when you want to go further
ApostropheCMS provides an extensive range of fields for your content types, but you're free to take it further with custom schema fields. Our documentation provides clear examples for implementing both the front and the back end. Then your field type becomes a "first class citizen" in the ApostropheCMS ecosystem, just like string or array or relationship.
And that's just one example of extensibility, a core principle in ApostropheCMS. One "piece type" can serve as a "base class module," extended and inherited by others. Need to enhance all piece types in the system? Just configure the @apostrophecms/piece-type module and your improvements will be inherited by every piece type.
But for most use cases, everything you need is already in our extensions library, like our SEO tools module that enhances pieces and pages with SEO fields.
The same principle of extensibility applies to page types and custom widget types.
Making Node.js safer: write custom APIs without bugs
Need custom APIs? Integrating with your own backend? ApostropheCMS is built on top of Express, but also adds new and flexible ways to create your own API routes with fewer bugs thanks to our apiRoutes feature:
- Finally, you can just return a value. There's no need to invoke res.send() every time.
- Exceptions are automatically caught and handled without crashing and restarting the entire application. No need for your own try/catch block, unless you want one.
- And yes, async functions "just work" in ApostropheCMS. There's no need to treat them as a special case.
Of course you can also write traditional Express routes with ApostropheCMS.
In-context editing
ApostropheCMS provides in-context, on-page editing that makes it easier to onboard editorial and marketing teams, while giving developers control over what ultimately goes into the HTML page. Developers decide exactly which HTML tags and classes to permit in the rich text editor. Inline images are optionally permitted, but developers keep control of how they are rendered. Markup pasted from other sites can't break the page thanks to the sanitize-html Node.js module built and open-sourced by the ApostropheCMS team. Your responsive CSS is safe!
With a few lines of Node.js code, you can also create custom widgets to populate the page in a flexible way. Just like pieces, widgets can be quickly created by specifying the fields you want, including nested content areas for in-context editing. Want to let the user create one, two, and three-column page sections in certain places but not others? Create responsive styles that re-flow that content for mobile? Make editors feel like designers without breaking the design? ApostropheCMS and Node.js work together to deliver it in a low-code way.
Single sign-on
Want your editors to log in with their Google accounts... or any other passportjs-compatible identity provider? Try our passport-bridge module.
Want to let the public sign up for accounts? Try our signup module, which implements the traditional email-based confirmation flow and allows the developer to decide what users can do once they have access.
Need to help your new users get work done in a third-party system, like github? Combine both of these to take advantage of robust support for secondary accounts and API calls in ApostropheCMS.
Access to the entire npm ecosystem
The Node.js open source ecosystem is famously extensive. To integrate with Salesforce, just import jsforce into an ApostropheCMS module and get to work. To display a list of products from Shopify, pick up shopify-api-node and plug it in. Want to re-use those features all over the site? Wrap them in ApostropheCMS async components. Then leverage our cache module to avoid hitting those APIs too often.
Easy ApostropheCMS hosting with "batteries included"
Because Node.js is so flexible and leaves so many choices up to the developer, deployment can have a steep learning curve. We've taken the time to think through the "gotchas" that can slow you down. Our mission is to make it simple to deploy Node.js and ApostropheCMS in a highly available, scalable, and durable way with [managed hosting](http://managed%20hosting/) that combines MongoDB, Node.js, easy deployment via "git push," control over environment variables and everything else you need to make your project a success. Multiple redundant processes ensure you don't experience downtime, and database backups are standard equipment.
Want dev, staging and production environments? Extra feature environments on top of that? Need to scale up to more application servers and a bigger MongoDB Atlas cluster? We'll set you right up. But there's no vendor lock-in here — we also provide how-tos for self-hosting.
The right Node.js CMS for 2025 and for the future
As you can see, ApostropheCMS is the right choice for building websites and web applications on Node.js. And that promise extends to the future. We're committed to our long-term support policy, making ApostropheCMS a smart choice for sites and applications that plan to stick around. Build your future with us!