Like countless other aspiring billionaires, I started my journey by writing my own content management system for a personal website using PHP and MySQL. When every interaction and feature needs to be written from scratch, progress is...slow, to say the least.
From there I found phpBB, phpNuke, and vBulletin, which was my first true foray into development work on existing platforms. These were very primitive software packages in those days and were close to “the code,” as it were, which just means that the abstraction wasn’t too far from the original scripting languages, PHP in particular. Then came Wordpress, ExpressionEngine, Drupal, and Joomla. I’ve built websites on these and have thoughts about each, but I’ve come to find that there are two which I tend to use most: Wordpress and Statamic.
I am working on an article about why Wordpress is a good choice for many of my clients, but some clients will appreciate the customization and lean-ness of Stamatic. From a developer point-of-view, Stamatic is infinitely more enjoyable to work with, and here’s why:
One of my largest qualms with Wordpress is that it comes with so much right out of the box. Most of these features will never be used by my average client. Because of this, I’m constantly fighting to get great performance. Statamic only comes with the base framework, which allows developers to build the CMS into exactly what a client needs.
You can do quite a bit in Statamic’s Control Panel, but you can’t do everything and many things are just faster, like building forms. By default, Statamic uses a flat-file storage system—as opposed to a relational database—so developers can simply create and edit yaml files and save them to the appropriate directories in order to create content and features. This makes building sites extremely fast and allows for version tracking through git. Performance is also fast because no querying is required to retrieve data, though Statamic also integrates with common databases if necessary.
One of my favorite features of Statamic is that it is so close to the code. While repeatable content can be generated in the CMS’ Control Panel—which is common with all CMS—unique content, like a special home page-only hero block (like the one found on my home page) is best hand-coded. Additionally with Statamic, I am still able to write my own Laravel routes and mess with any middleware and make use of any part of the framework.
It is true that Statamic is an abstraction of Laravel, which is an abstraction of PHP, both are what I would consider transparent abstractions. This allows developers to make use of all of the tools at every layer of the abstraction. This is unlike, let’s say, Wordpress, which kind of forces a developer to use its slightly convoluted hook system as well as pay close attention to the dreaded Loop.