If you've been around the web development world for any length of time you've probably at some time made use of a Content Management System such as Drupal, Joomla, Xoops or any one of the millions of alternatives available out there. You've probably needed the CMS to do something that it can't do out the box and if you're like me you might have decided to look into creating a custom module/plugin for the CMS. If that's the case, then you would probably agree with me that most CMSs are horribly written and full of spaghetti code. The state of most CMS code usually has stem from a lack of careful thought about how the CMS should be put together, and a continuously growing code base.
I want to introduce you to a CMS that I've been making use of recently (My wife's company, RubyCube Marketing, is using it and this blog runs on it). It's called Croogo. It is a CakePHP based CMS that is well thought out and has a growing community of dedicated and passionate developers and users.
Croogo is really easy to install, regardless of your expertise level. If you have never programmed and don't know your Composer from your nodejs, simply visit http://downloads.croogo.org/, download the latest version, unzip, upload to your web server with whatever interface they provide and visit your website and follow the install wizard.
Alternatively, if you prefer working in the command line with tools like Composer, you can install Croogo using composer by running
composer create-project croogo/app myapp in the location you want Croogo installed (It will be installed to the myapp subdirectory in this example). Then you can run
Console/cake Install.install and follow the command line install wizard. One of the really nice things about Croogo is that there is quite a few things that you can do from the console, including installing and activating plugins and themes.
Speaking about plugins and themes, Croogo is incredibly flexible and extensible. While there aren't many plugins currently available, those that are available are of a high quality. Being written using the CakePHP framework means that writing your own custom plugins is incredibly easy, Croogo even gives you the ability to hook into most of the core components. As a matter of fact, the core functionality of Croogo itself is written as Croogo plugins. Some notable Croogo plugins include a Photo Gallery, a SEO optimisation tool and the Node Attachments plugin.
Out of the box, Croogo allows for creating content nodes (All content in Croogo is stored as a node) for a certain content type (Blog posts, static pages, etc.). It also includes a taxonomy system for categories, tags, etc. There is also a comment system, the ability to create nested menus, manage media (images, etc.), and contact forms. Croogo also includes support for the Recaptcha and Akismet anti-spam services, a full access control system with user management.
You can easily customise the look and feel of your site thanks to Croogo's theme support which allows you to override any view from any plugin. There aren't many Croogo themes out in the wild, but one notable one is the Bootstrap theme by CVO Technologies.
Croogo includes a simple admin JSON API (Out the box there is an end-point for Nodes and for Users) which is very customisable and easy to extend. The API interface makes it simple to create APIs for your own Croogo plugins.
Croogo is a fantastic CMS that is easy to use for non-developers, and easy to extend for developers and I highly recommend you take a look at it for your next project.