Choice is Important
Developing a CMS (Content Management System) in the age of WordPress is a strange task. It is rather discouraging to compete against such a mastodon, knowing that you will hardly ever be able to inspire a similar vast ecosystem. However, webmasters don’t always need such an advanced solution for their websites. And there are developers eager to try building a competing CMS.
WordPress is a Swiss army knife that can handle almost any task, but it can also become a monster if it gets overloaded with plugins. Sometimes, simpler solutions are what is needed.
Today, I would like to shift the focus to a few alternative scripts. Since the code word is “simple”, the scripts that I’m going to talk about have a common feature – they don’t rely on a MySQL database, except for one.
Now, going with such alternative solutions does have its disadvantages. A list that does not pretend to be complete is available below:
- You won’t find all the features that you are used to.
- If you need a specific plugin or a new feature, you are most likely going to have to write it yourself.
- The choice of templates and themes is usually very limited. If you like a particular HTML template, then you may have to adjust it yourself.
- The community that you can ask for assistance is small or does not exist.
- The authors of the script may decide that they’ve had enough and stop developing it…
The above points can also be considered as challenges too, if you are the kind of person that likes to poke around scripts and solve problems.
There are advantages, too:
- The installation of such scripts is very often quite simple.
- Their nature makes them run very fast.
- If you develop sites for third-party clients, using such exotic applications may make it harder for your clients to leave you.
The main criteria while choosing the below scripts was if they still appear to be developed. The scripts from the selection below do seem to be under active development but, of course, this does not mean anything. Their authors may get hired at Google tomorrow and be forced to shift their efforts elsewhere.
All the below scripts were installed and tested under a hosting account at ICDSoft.com.
Here we go:
This is one cute script. Anyone that is familiar with WordPress should feel comfortable with it. The last version is from May 27, 2018. As of writing this post, this is less than a year ago, so the script can be considered live.
The installation was a breeze. Just copy and unzip a file. Then go to /admin and log in with the default admin/admin username and password. Of course, you will have to change the password immediately. The data is saved in an SQLite file.
The default template is nice and responsive.
There are HTML and plain text editors for your posts and pages. The administrative area contains a number of modules that you can use for your site:
- Code snippets
The dashboard area includes the option for an automatic update of the core files, which is nice.
One feature that I felt was missing was the option to add parent pages.
I did a search for a community and discovered that the script is developed by a team from Poland. There is a forum with a few additional templates, discussions about features, and support requests. However, it is mostly in Polish: http://forum.sruu.pl/f-batflat
Bolt CMS is on a whole different level. There is an extensive section with documentation about the application that covers topics such as requirements, installation, upgrades, content types and content management, template building, etc. It is based on the Symfony framework and provides a rich set of features and ways to organize the content of your site.
The installation can be performed via Composer or manually. The first time that you access the newly-installed script, you will be prompted to create a user with a password.
The default theme is responsive and the backend provides an option to install a set of dummy data in order to preview the possible ways of organizing it.
There is a rich-text editor for the excerpt and the article, which also handles tasks such as permalinks, taxonomies, featured images, etc.:
The management of content with Bolt CMS is not quite obvious. It does require some getting used to. However, once you get a hold of it, you can build some very nice sites.
The company that manages the development of the script (“Two Kings”) takes it quite seriously. New releases get out frequently. The last one was issued shortly before I started writing this article. There are few channels for communication with the community, and a market page where you can download templates and extensions. Some of them are rather new.
If you decide to build a theme yourself, the template engine is Twig and there is extensive documentation on how to complete the task.
This is one very spartan CMS. It does not even have an administration area and a content editor. You just create text files and directories in a designated content folder. The folder tree is transformed directly into a tree of your data, or at least, this is the intention. It does not fully work like that with the default template. Some of the other templates may be able to represent the parent links more efficiently, but I did not test them.
There are recent commits to their GitHub page, so the project still seems to be live. The templating engine is again Twig.
The CMS comes with a few templates and plugins. It can be installed manually or with Composer. If you would like to change the look of the CMS, you do have to manually upload the template files to the designated folder and edit the configuration files. The same applies to the plugin installation, which makes the management of the script a little bit complicated.
As we mentioned, there is no content editor. The users have to create their documents manually. The basic text formatting relies on a light markup language called “Markdown”.
For example, a string surrounded by single asterisks is considered italic, two asterisks correspond to bold, and three asterisks – bold and italic:
The number sign (“#”) is used to mark headings:
# Heading1 #
## Heading 2 ##
All the way up to <h6>. A link is represented as follows:
There is markdown syntax for quoted text, bullet lists, ordered lists, etc.
For someone that is used to a visual editor, this may seem strange. However, if you are writing a large volume of text, it starts to make sense to apply the formatting without having to mark your text and click buttons. The Markdown syntax serves the purpose of shortcuts to the actual HTML tags and has the potential to heavily contribute to the productivity of writers that get used to it. It fits perfectly the concept of the Pico CMS, but personally, I find the whole manual configuration of this CMS too distracting.
Grav is rather similar to Pico. It also relies on flat files and the Markdown syntax. However, it seems to continue where Pico stops. Again, it can be fully managed in text mode by editing files directly. This applies to the creation of content and the configuration itself. However, the script also provides a handy administrative plugin that allows completing the same tasks, but this time in a visual environment.
The installation of plugins and themes is automated via a shell CLI interface. The update of the CMS, plugins, and themes can also be completed via the admin area, or via CLI commands. This, and the polished design of the admin area, leave the impression that you are using a much more advanced product.
Furthermore, their site seems to provide a large selection of themes and plugins. Both the core files and the additional themes and plugins seem to be regularly maintained.
A possible downside is that the creation of content, even with a visual admin area, seems to be a little bit complicated. The initial configuration does not seem to be obvious either. A nice touch is that there are pre-compiled skeleton versions that combine the core script, a template, and the required plugins. I’m sure that Grav can be used to build great sites that are very fast, but a certain learning curve will be required. Fortunately, it seems that there is an active community to assist you during your journey.
PluXML is an interesting effort from France. The installation is pretty straightforward, once you locate the download link. This may be a challenge for users who don’t speak French. Here is a direct link: – https://www.pluxml.org/download/pluxml-latest.zip
The installation wizard and the admin interface do have an English translation, fortunately.
The frontend does look good. The template is nice and responsive.
The backend is more spartan. It can be extended with plugins, or at least, it seems so. There is a selection of themes and plugins. The additional themes do not seem that visually pleasing as the default one, though.
There is an active community and forum with very recent publications, but it is exclusively in French – https://forum.pluxml.org/.
Their blog seems active, too – https://www.pluxml.org/blog
This CMS looks and feels old. The default theme is not responsive at all. The backend reminds of the old versions of WordPress before it was a thing. The default functionality seems to be more suitable for a site CMS and not for a blog. However, it seems that all of the above can be changed via plugins and themes.
There seems to be an active community that builds and maintains such modules. The showcase section of their forum lists some very nice sites that are created with the particular CMS. The more complex sites do require quite a bit of custom work, though.
This is one CMS on the rise. October is based on the Laravel framework, uses the Twig template language, and has a built-in Ajax framework. Its marketplace does include templates and plugins, but this does not feel like it is the main focus of the system.
The backend of the CMS seems a lot like an Integrated Development Environment (IDE). It is geared towards developers who would like to extend the CMS with additional functionality. Users that come from systems such as WordPress are most likely going to feel confused about how to start creating content. However, developers that would like to use the CMS to create a template from scratch and extend it with unique features for their users and clients, will feel at home.
Blodit is another nice little CMS. It returns to the end-user-friendly territory. It comes with a nice set of templates, useful plugins, and an intuitive backend. I liked the handy WordPress migration plugins in particular. The first one allows importing the data from a WordPress XML exported file. The other can scrape the data of a chosen blog via the WordPress REST API. The second approach does not always work, though.
Probably the only thing that seems to be lacking is media management. Adding an image to your post does not seem to be that obvious. The functionality is there, but it seems a little bit counter-intuitive. The rest of the control panel is organized rather clearly. This is supported by a nicely compiled documentation and an active forum.
The CMS seems to be rather suitable for small projects that are supposed to be completed fast.
Now, let me step aside from the actual editors and discuss their data storage systems. Since these applications do not use a MySQL database, the data is stored directly in the file system and you definitely do not want to allow other users to be able to download your file-based database. There are a few approaches to protect the database. Let me take the first script (BatFlat) as an example. Its files are organized as follows:
/ /admin /inc /themes /tmp /uploads .htaccess index.php upgrade.php
The CMS is served via the index.php file in the root folder, while the SQLite database is stored in the /inc/data folder. The name of the database is database.sdb. The simplest approach in order to disable the access to your data is to place an .htaccess file in the /inc/data folder with the following content:
Deny from all
This won’t prevent the script from working with the file – it just won’t be publicly accessible. If you don’t feel like editing files manually, you can use the Protection -> Web access protection section of your hosting Control Panel with ICDSoft.com and set a user with a password for this folder. Anyone who tries to access this location will be prompted to log in with a valid user/password combination.
The initial screen of the Web access protection interface will contain the names of the folders for your subdomains and your main domain (www) on the left, such as:
We have installed BatFlat in a subdomain named “batflat”. So, you will have to browse the folder tree until you see the “data” folder where the database is stored. Then click its “Plain” or “Digest” buttons and set a username with a password:
The case with the Bolt CMS has its specifics, too. Since it is based on a framework, its folder structure is a little bit different. We installed the script in a subdomain named “bolt”, and in a project folder named “test”:
. └── bolt ├── composer.phar └── test ├── app ├── composer.json ├── composer.lock ├── extensions ├── index.php ├── public ├── README.md ├── src ├── var └── vendor
The script is actually served from the /bolt/test/public folder. At the same time, there are other folders at the /bolt/test level and it is not a good idea to leave public access to them. The solution is to change the document root of the particular subdomain. On our side, the full path to a subdomain’s web root is as follows:
for the bolt subdomain. In this case, we will have to change the web root to the following folder:
This task can be completed via the Document Roots section of the ICDSoft Control Panel:
Just click the Change button, browse to the new target web root folder, and save your changes. This will effectively keep your database out of the web-accessible scope.
The process is the same for the rest of the site management packages reviewed here – you just need to protect the file/directory it uses.
As promised, the last CMS is using a MySQL database. It is also a rather unique one.
As any MySQL-based script, the installation requires that you create a database upfront and have its name, user, and password, in order to complete the installation.
This script does not come with a default template. There are no plugins either. The CMS acts as a plugin itself. The users are supposed to pick an HTML theme that they like and use the templating language of CouchCMS to modify it to behave as desired.
The administrative area of the script is empty by default and gets populated with the theme files that are modified with the PHP code of the CMS. Specific PHP knowledge is not needed, though. Only two lines of PHP code are required for a theme file to be recognized by CouchCMS. The functionality of the template files is controlled by tags with directives that are specific for the CMS. They resemble a simple programming language, too. Setting a site with this CMS does require getting used to its specific language. However, since it is not PHP or any other hardcore programming language, it is more approachable by users who are not experienced in programming. The development process also requires some imagination in order to figure out how to organize the site. The CouchCMS site has a section with extensive documentation and a complete example to have the users started.
The CMS supports user management. So, a developer can configure the site with the super-admin account, and then handle editor accounts to their clients in order to add content.
The purpose of this post is not to choose the best alternative CMS. This is not possible. The above systems are rather different. Some of them will handle a particular task better and faster than the others. This picture will vary for the different tasks, too. The same applies to the human factor. Each developer will most likely choose a different script, based on their level of experience and style.
What’s important is knowing that these systems are out there and that they are viable alternatives to the big and established content management scripts such as WordPress, Joomla, and Drupal.
By Support 58