CMS what?

Posted 2014-06-07 14:15:22

I have made a decision. It is time to kick the site live.

For some time I have been thinking about which content management system (CMS) to use. I am currently using Joomla but I have also tried Wordpress and briefly looked at Drupal. And I have come to the conclusion none of them serve my purpose. Not because they are bad but because I have a set of requirements that does not really fit with any of these 'big' CMS's.

The main reason for not going with any of these CMS's is spelled performance. Once again, not because they are bad, but because my requirements are different. All these CMS's make heavy use of PHP and calls to the SQL server. The problem with that is that on a low traffic site like this one, it will often take up to 10 seconds to get a response back on a page request. So why does traffic intesity has anything to do with response times? That all comes down to cache settings on the webserver. With a long time between page requests the cache has been cleared and all the PHP/SQL stuff has to start from the beginning, which take time.

Also since this site is a non-commercial, or you may even call it a hobby website I want to keep the server cost as low as possible. And I get the performace I pay for.

So with this basic requirements on performance I have decided to roll my own lightweight CMS, the RetroCMS. Now lets consider which functions I really need on my website. Or lets start in the other end. which functions of the 'big' CMS's is it that I don't need.

Users. There will be no users on this website, except myself writing articles. Or more correct all users except myself will be public (anonymous) users which read what ever is on the site. Soo there is no need to have user database and user settings and stuff like that.

But I do need to be able to authenticate myself, so that only I can write and edit articles as well as do other administrative tasks. So this gives us the basic list of 'user' requirements.

  • Login/logout for myself
  • As logged in I can write and edit articles
  • As logged in I can do other (at this point unspecified) administrative tasks.
  • Any non-logged in user is called a public user and can only read articles.

The next big thing that 'big' CMS gives that I don't need is themes. They are called little differently in different CMS but the basic idea is that the websites look and fell can be easily changed by applying a theme to the content. I plan to hardcode the theme for and if I need to change how it looks I will rewrite the html/css/js that is the frontend of the site. Hence themes will not be part of the RetroCMS. And strictly speaking none of the frontend code will be considered as part of the RetroCMS.

Ok, so with the above said, lets consider which functionality do I need for this site. Well the obvious once of course, a public user should be able to list articles and to read articles. To enhance the usage of the site the articles should be categorized and be possible to tag. This also means that listing of articles should be possible based on category. Tags will only be used in searching. Which brings up the last basic functionality that is needed, a search function.

Lets summarize the basic functional requirements:

  • Any user (public or logged-in) can list articles based on publication date and/or on category
  • Any user can read an article.
  • Any user can search for an article.
    The search can be based on category, tags, publication date and/or article text.

Talking about articles there is one additional feature that I would like to add, the possiblity for users to comment on articles. I do not consider this to be a basic requirement but something that I would like to have added eventually.

As a last point lets consider what should be the content of an article. Well text of course, including html links. But I also would like to have images, which mean I need functionality to upload, store and edit/manage images as well as include them in articles. Also I would like to be able to link to and show youtube videos on site. So lets summarize article content requirements:

  • An article can contain text and html links.
  • Articles can also contain images
  • Articles can also contain youtube videos which can be viewed directly on

Well that's about it, when it comes to basic CMS functionality that I think I need for my site. But before we can close we need to consider some administrative requirements as well. Since I intend to publish the RetroCMS under GPL, there should be an installation script and description included. Another important feature is backup. It should be possible to backup the site content both manually or setup it to be done automatically on a regular basis. And of course it should be possible to recreate content from a backup, otherwise there is little use for backups.
Another feature that I think would be handy is the possibility to set a global message that will be shown to all users as well as set the site in maintenance mode where no one can access any content but an administrative message is shown instead. So let's summarize the administrative requirements:

  • Installation description and script should be included.
  • Site content can be backed up manually
  • Backup can be setup to run regularly.
  • Recreate site content from backup.
  • Set and show a global message
  • Set site in maintenance mode, where a messsage is shown to all users and no content is available.

We are getting close to the end, and I think this is all functional requirements I have. Now I will talk a little about some let's say non-functional requirements. These are not strictly requirements of the RetroCMS but are requirements for the frontend, i.e. the code that runs in your computer. First the site will be made with HTML5 and CSS3. The site should be search engine friendly and also use a responsive design, i.e. be usable on all screen sizes. Cookies will not be used, except maybe for logging in, which only I will do. Javascript will be used but it should be possible to use the site with javascript turned off. This gives my frontend requirements:

  • It should be possible to use site without accepting any cookies. In fact cookies will not be used.
  • It should be possible to use site with javascript turned off. However js will be used to enhance usage.
  • Web browsers need to support HTML5 and CSS3.
  • Website should support all screen sizes.
  • The site should be search engine friendly, i.e. basic SEO.

Well, I think that's all for now.
Hope to see you soon again

// Retrocoder