A content management system (CMS) is a computer application that supports the creation and modification of digital content using a simple interface to abstract away low-level details unless required, usually supporting multiple users working in a collaborative environment.
Why do we need a CMS?
While working on large scale Enerprise applicaions we noticed that it would be nearly impossible to keep and maintain content in our html files. By content I mean rich text and images mostly. Let me explain why it is the case.
Imagine you have 10-15 teams working on 1 project. Each team might consist of 5-20 people. It is a mix of business, marketing, qa, software engineers, architects,etc. Decisions about the content could be made, say, on the top level by the business. It usually goes through a series of changes. Each time it would be too time consuming and too confusing if it has to propagate all the way to developers who have a code access and know how to make appropriate html changes. As well as it is not secure because not every person/team can be trusted to make changes to the content. Especially if there is a constant rotation of employees. That is one of the reasons why it is a good idea to have one trusted centralized place where only authorized people can make changes to the content. It keeps it modular and maintainable as well as it is accessible to people with no technical background.
We did an extensive research on currently available CMS. As well as we have an experience on a few products we already worked with.
We live now in the world of APIs, in the world of products that are user friendly: easy to install/use, visually pleasant, affordable and have a support 'on the other end'. In our experience and with our researach we found a lot of products to look archaic and to require a complicated process of installation/configuration because they don't have an API in its core. As well as a lot of them might not be affordable to some teams.
We found one CMS that fulfills all our needs and actually it is more than just a CMS. It is called Contentful.
It has an API in its core
It has a good documentation
Easy to start using the product
Very responsive and helpful team behind it
Slick and modern interface
Affordable and flexible plans
Contentful Codesoju integration
As a part of our yeoman generators we added a CMS template. It explains how to configure your generated application to be able to connect to your CMS studio. We added it across the platforms. It looks like this:
Contentful studio is called a space. There are many ways to organize your space. There are many ways to organize your content within your space. Please refer to the Contentful documentation to see the options. It all depends on the needs of your application.
This simple template provides some information on how to make a connection to your space and how to pull a few content entries. It is a very basic example. We can only provide a template and you have to configure and expand it with your credentials based on your needs. We have a folder structure for you set up with a guidance on how to bring up this simple example like the one you see on the image above within the borders.
We would recommend to create a good processing engine if you have or plan to have a lot of content and to integrate a data cache to avoid making unnecessary API calls. Please refer to an article about Data Cache to find out more. We use Redis as Data Cache.
To implement a simple example please refer to the youtube video (REFERENCE) we created to help you get started. Or, if you prefer, follow the following steps:
Create a space with Contentful
Create a Content Type with a few fields
in our sample example we have 6 fields: name, image, content, date, info and title
In your Codesoju app modify a feature toggle (read about feature toggles here)
Construct your API to call Contentful
Map the data in your Angular controller
Now you should have enough information to get started on CMS and you have a tool that you can adjust to your particular application!