Joel Barna Professor Mike Gildersleeve IT 704 10/28/14 Content Management Systems: Comparison of Tools What is a CMS? A content management system (CMS) is a system that provides a central interface for creating, deleting, editing, and organizing content on a website. The CMS contains two essential parts: A Content Management Application (CMA) which an administrator will interact with, and a Content Delivery Application (CDA) that updates the website and serves dynamic content to a user. Content management systems are an essential part of modern web development because it creates an abstraction layer away from the underlying code. First built for bloggers who wanted to create articles online without modifying the website s code, CMS have since been improved to allow many different features. Listed below are the features of CMS that one should consider when shopping for one and the available CMS for a backend node.js web developer. Why Node.js? The most convincing reason to choose node.js as a backend language is to provide simplicity across web development. Using Node.js allows a developer to use JavaScript syntax when developing a backend application. Most web developers will have an understanding of JavaScript when building the front end of a website, so it is not much of a step to learn the ins and outs of Node.js. In addition to the syntax of JavaScript, another compelling reason for Node.js is because all of your data is able to be represented in JSON (JavaScript Object Notation) format [1]. Instead of having to transform the
representation of your client s JSON data to a specific language s data types, the developer is able to consistently use JSON. Lastly, Node.js uses an event- driven asynchronous model that resolves to a non- block input/output server. Node.js is run entirely on one thread, so multi- threaded baggage that comes with different server- side languages that can slow down a server is not an issue in Node.js. That being said, if large amounts of computation is put onto the one thread, server responses will slow down. Node.js is best for server- side web applications without CPU intensive computation. Content Management Systems for node.js From the list of nine content management systems I found during the survey of tools, I picked three to analyze and compare: Keystone.js, Cody CMS, and Ghost. Keystone.js Known as the best CMS available for Node.js [2], it provides a strong backbone for a simple content management system. Keystone.js is available for free and sits under the MIT license. In addition, there are sixty four contributors to the open source repository and daily commits. Keystone.js runs with two of the most powerful elements of Node.js: Express.js and MongoDB. Express.js is the most popular web application framework for Node.js and MongoDB is a document based database whose queries are written in JavaScript notation. Learning to use both Express.js and MongoDB alongside Keystone.js will allow a user to progress and create web applications in Node.js without Keystone.js. In addition to using popular frameworks with Node.js, the content management system is also built upon an MVC architecture. Learning this Model- View- Controller Architecture will allow a user to take principles away from Keystone.js and apply them elsewhere in future applications. There are some key features of Keystone.js that stand out as needed features of a CMS. The CMS comes prepared with standard data types such as name, email and password which can be easily
incorporated into online forms to speed up validation and database storage. Keystone.js provides an out- of- the- box Admin User Interface which represents the custom fields and content- types created by the user. A user can easily use this to build a website from the ground up, or use this as a CMS during production. Lastly, Keystone.js provides natural integration with email. It provides a template email system and incorporates integration with MailChimp, a leading mail service for web applications. Cody CMS Being built by Belgians, Cody is multi language from the start. The best part about Cody is that it is built to run right out of the box. Unless there needs to be some customization, Cody provides many online features through the admin tool to get started. For developers, Cody uses the familiar MVC architecture to handle requests, control them, model the data, and create views for the client. One of the striking features I found from Cody was the simplicity of the system. From the website, the entire system is built upon a structure of /[language]/[pageid]/[request]/[id], with default values for missing components. Once the pageid is found within the system, a context object is created to contain all the information about the current request for that page. Each pageid has a linked controller, and then once the controller is called to modify the response, the context is passed onto the view which renders the template dynamically to the client. Lastly, while Cody CMS seems to have a strong base, there are spots where the documentation is not completed. Ghost Ghost is advertised to be a blogging platform and it does just that. Ghost has 171 contributors on their open source GitHub and is continuously in development. In fact, I just got an email about their most recent release just yesterday. The installation of Ghost is incredibly simple. Once Node.js is installed, there are only five simple steps to run it locally: 1. Download ghost zip file from https://ghost.org/download/ 2. Open command prompt / shell in ghost directory
3. issue the command npm install - - production 4. issue the command npm start 5. Open your browser to localhost:2368/ Once you enter your credentials and information into the web prompt, your blog will be up and running. The admin interface for ghost is impressive and contains a markup on the left side of the screen with the rendered blog post on the right side of the screen. Changing themes for Ghost is incredibly easy as well. All you have to do is drag the folder containing your theme to the content/themes folder and select that theme in the online administrator interface. There is a large support for themes and there are even many free themes available. To get a jumpstart on Ghost, visit ghostforbeginners.com and start your own blog today! Conclusion Keystone.js and Cody CMS are two of the best content management systems for the backend Node.js language. From the information I could find online, Keystone.js is the best content management system available for most website s requirements. Cody CMS could be utilized if there is a strong need for multi- language support, but seems to fall in the shadow of Keystone.js. Lastly, Ghost is one of the best CMS blogging platforms available. The event- driven Node.js system is perfect for a blogging platform as there is no heavy computation for the web application.
Resources 1. http://www.toptal.com/nodejs/why- the- hell- would- i- use- node- js 2. http://waitingfortheelevator.com/a- review- of- node- js- content- management- systems/