The best-known content management systems today are based on older technologies, such as PHP. If you want a CMS which uses the latest trends, such as Node.js and NoSQL databases, you have to be more adventurous. The most complete choice currently available is KeystoneJS.
The source code for Keystone is available under the MIT license on GitHub.
At this stage of its development, it isn’t as polished and easy to use as its traditional competitors. Installation is more complicated; you start with NPM to install the required components. You can use it to build a simple website, but perhaps it’s better viewed as a CMF (content management framework) than a CMS. Its approach is “We’ll handle the back end, you handle the front.”
Features and limitations
Keystone supports a reasonable array of features, including:
- Secure login and session management
- Image uploading
- Automatically generated administrative user interface
- Form processing
- Email sending
Keystone doesn’t actually require a front end at all. With a suitable API, it can serve as the basis of a web application that delivers content to clients.
KeystoneJS for developers
The normal development scenario will be to create a special-purpose site, rather than creating a general-purpose site and enhancing it with plugins.
The default Keystone project structure has the following directories:
- ./models: The data models defined for the site.
- ./routes: Application views and REST API controllers.
- ./templates: HTML templates for content.
- ./updates: Update scripts (for the content, not the Keystone software).
The developer starts by creating one or more models, views to obtain their data, and templates to display them on the browser. The public directory contains components which the template references in constructing the page.
A good introduction to KeystoneJS is “Practical KeystoneJS,” which is free to read online. It explains how to install Keystone and MongoDB, and then it shows how to build a simple Web application and create an administrative interface and account for it.
As Keystone matures and other developers add components, it may become a viable competitor with existing CMSes for general-purpose websites. For the present, it saves MEAN stack developers a lot of work in developing specialized websites and applications.