Wordpress might be the most popular way to host a website—blog or not—but it's not the only way. Because Wordpress depends on a MySQL database to store information about posts, pages, users, and comments, the technical overhead to keep things running smoothly is a little more complex than plain 'ol HTML and CSS. Having a database is another opportunity for failure, another potential attack vector, and constantly pinging a database can slow down popular websites, forcing administrators to rely on caching.
Flat-file content management systems (CMSs) present an alternative vision: instead of pulling content from a database, these systems pull content from a plain text/Markdown file. These text files can be edited in text editors or via a Wordpress-like dashboard, and can be deployed via Git, SCP, FTP, and more.
Pros and cons of flat-file
Before we dive into the options, and in all fairness, let's take a moment to consider why you would and wouldn't want to host your website via a flat-file CMS.
- No SQL injection: Even great developers can create SQL injection vulnerabilities—leaving a database out of the equation certainly boosts security in this regard, and lesses the risk of catastrophic crashes.
- Version control everything: If you use Git for your projects, controlling your entire site—from templates to actual content—becomes trivial. You get all the peace of mind of version control without any additional complexity.
- Speed: Without database queries, pages should load faster—because speeds affect everything from conversions to Google search rank, that could make an impact on the bottom line.
- Lack of plugins/community: All of the flat-file CMSs listed below have communities that are significantly smaller than Wordpress', or even others like Django. This means fewer available plugins and potentially less community technical support if things go wrong.
- Unfamiliar environment: If you're a web developer building websites for clients, they might not appreciate being thrown into a new CMS environment after spending most of their time in Wordpress previously. If it's a personal website, you should consider your own learning curve as well.
- No search or sort: Without a database to organize your content, reliable site search and sorting becomes a lot more difficult to implement. Some flat-file CMSs have similar capabilities, but they're usually not quite as inherently robust as what you get with a relational database.
- Development speed: Some argue that flat-file is easier to develop, but I think it's safer to say that this mostly depends on what you're trying to develop, and how complex the end result is meant to be. There's no clear winner here except whatever solution gets the job done.
- Flexibility: Again, chalk this one up to developer skill and ambition. Flat-file CMSs are likely to be less complex than Wordpress' internals, but that could be both good and bad, depending on your needs.
Okay—let's get to some of the most popular and proven flat-file CMSs out there!
My favorite, and the one I host my own websites on—Grav was built to focus on speed and simplicity. The Twig templating language helps you do all the usual loops and inserting variables, and Markdown files make editing content a breeze. It's PHP-based and licensed under MIT.
Pico is actually one of the main points of inspiration for Grav, and uses the same Twig templates and Markdown files. It's even more barebones than Grav, which makes it great for those who want to build their sites locally and then deploy instantly via Git.
Unlike many of the others, which use YML, Monstra is based around XML for things like metadata. It comes with a well-featured dashboard that allows you to create and edit content without delving too deep in the underlying code. It's been a year since the Monstra codebase was added to, which suggests that either they consider it feature-complete, development is slowing, or both.
October really bills itself as client-friendly, so it might be a good choice for web developers who are building products for their own clients. It's based on the proven Laravel PHP framework, and comes with a really slick-looking dashboard for making changes to both the content and the underlying code.
Still in active development (last commit as of writing was within hours), Bolt comes with rich features to edit content, manage media files like images and video, and lets developers customize the structure of content in any way they like—useful for sites that have a blog and a review database, for example.
Another one in active development, WonderCMS lets you edit just about any aspect of the website with a WYSIWYG editor—handy for those who want maximum flexibility or want their clients to be able to tweak on their own. There's no configuration necessary, and it comes with a bunch of built-in features like one-click backups.
razorCMS aims to combine two different technologies together to make the build-out a little easier. The public-facing site is basic PHP and flat files, whereas the management console is an angularJS web application. razorCMS also has a supported Docker installation, which might be an added bonus for those who want to keep all their applications separate.
Automad claims it uses a "human readable syntax" for creating custom themes without any knowledge of PHP, and solves some of the aforementioned cons of flat-file—it comes with built-in caching and search in just a few steps. All content is stashed in easy-to-use, version-controllable
All of the options above have been entirely free and open source (FOSS), but there are some truly impressive flat-file CMSs that require a paid license. In all fairness, we couldn't leave them out entirely.
Kirby has an impressive list of clients, such as Joyent, Mercedes-Benz, and Smashing Magazine. Installation is as easy as uploading a handful of files to your server. A commercial license costs $89 and comes with email support, but you can install a free version locally to test it out and get a handle on the development style.
Who needs just a blog when you can build any type of content thanks to rich content types, routes, and templating capabilities? Statamatic is built on Laravel and lets you version control everything, "from content to config." A single license will set you back $199, but for web development agencies, there's an unlimited license version for up to $199/month.