A content management system built from the ground up by me, using plain PHP with no framework. Now running 15+ sites.
In 2011 I wrote my first Content Management System (CMS). It was designed to be ultra-lightweight, and easy to move content from a staging server to a live environment. To facilitate this process I avoided MySQL and stuck with file-based storage, making it very easy to simply FTP files around and know I have the latest content.
Of course, for more complex projects this proved to not be an ideal solution, so I began designing a new CMS that would retain the simplicity of its predecessor while moving to a more powerful MySQL database.
I designed Crow with the aim that it would be:
- Easy to use
- Easy to develop for
To facilitate ease of use, I built the admin panel around Twitter Bootstrap, an HTML5 framework designed so development could progress quickly while still looking great.
It is built from the ground up around the idea of modules - even flat pages need a module. This makes adding features a cinch.
All data access is done through a series of PHP functions built for the job - all communication with MySQL goes through these channels. Not only does this make data access easier for modules, it also means I only have a second barrier against attacks - if a module doesn't pick up SQL Injection, these functions will.
Crow was developed exclusively on weekends, and version 1.0 it was finished in July 2012. As of 2014 it is up to version 3.1, and runs approximately 15 of my personal websites.
In 2015 I decided to deprecate it in favour of a simpler stack using Slim and Twig (and moving several sites to Node.js).