A short introduction about OctoberCMS our newest companion to realize delightful CMS experiences.
Over the last few years we created lots of projects with WordPress and it was - and still is - a pleasure to do so. But we had some requests where WordPress just didn't exactly fit. WordPress is great when it comes to basic websites. But as soon as you have requirements which are more complex or you even need to create a web application, WordPress isn't the right choice probably.
What is OctoberCMS?
WordPress is based on simplicity - everything is a post, which makes it easy to use for content authors and developers. Thanks to this concept, (nearly) all backend forms look consistent which helps content authors a lot. But this simplicity makes it harder for developers to create backends for more complex content.
This is where OctoberCMS jumps in. It is a great mix of a file based and database driven CMS. Everything which is more or less static (like pages, menus and templates) is saved as files. Like this the content can be served really fast. However you can of course edit these entities directly through the backend.
Everything which is more dynamic and more complex (like events, news or blogposts) is stored in custom tables in the database. Thanks to this you will have full freedom on how to create your own types.
Complexity doesn't matter
With this strategy OctoberCMS can be used for simple websites as well as for really complex ones. When using it for simple websites, the user experience of the backend can be compared to the one of WordPress. It is easy to use and looks consistent. On top of that it adds some useful features for power users, like editing multiple content elements in tabs or keyboard shortcut. The most useful one is saving data with CMD+S / CTRL+S. I'm already at a point where I find myself trying to save blogposts in WordPress with this key combination (which doesn't work sadly).
When using it for a more complex website you'll get full freedom on what to use OctoberCMS for. You can easily use it as a headless CMS for any sort of web application. To help you with this, the backend gives you a base structure for list views and form views for each model. If required you can modify these templates to fit your own needs. The provided form widgets helps creating consistent backend forms for almost every use case. If needed you can create your own form widgets without any hassle. This means the backend is highly customizable which improves the usability when editing complex content extremely.
Still not convinced?
Let's look at some more, great reasons why you should consider OctoberCMS for your next website:
- Based on Laravel: OctoberCMS is based on the Laravel framework (which is based on Symfony. It builds a really solid foundation for the core, plugins and themes.
- Clean code: By using the Laravel framework there is clear coding style definition which helps your code base to stay clean.
- Open Source: The whole OctoberCMS project is hosted as open source software on GitHub which is a really important thing to build a big user community around.
- Easy to extend: OctoberCMS is built for extensibility. The best example for that is that even the most basic features, like creating and editing pages, are provided via a plugin and are not hardcoded in the core.
- Database query building with Eloquent: For database query building Laravel has Eloquent ORM integrated. With this you can easily create database queries which fits your needs.
- Database migrations: The whole OctoberCMS setup (core and plugins) is based on database migrations. This helps keeping the database consistent when installing or updating plugins or the core. With this mechanism you can easily rollback to an older version if something doesn't work as expected.
- Event driven: The whole setup is event driven which enables you hook into core or plugin processes and extend them easily.
- Twig templates: OctoberCMS uses twig as templating engine. This makes it possible to completely separate your data from the templates.
- Integrated assets pipeline: OctoberCMS comes with a twig based assets pipeline to compile and minify your CSS (support for Sass & Less) and JS files. All you need to do is including your source files directly in your twig templates and they get compiled, minified and cached automatically when calling the website the first time. If you have more complex requirements Laravel provides an abstraction layer above webpack called Laravel Mix which makes the creating of webpack based build tasks easy.
The bad parts
Not everything can be nice and shiny. So here we go with the imperfect or missing parts of OctoberCMS:
First of all since this is a rather new CMS project (compared to other big players on the market) you might find some more or less "simple" core bugs while implementing a complex backend feature. This can be annoying, but since the community is very active (on Slack or on GitHub) you will get help quickly.
Another important topic is i18n: OctoberCMS provides an implementation for translating content as a plugin. With it you are able to translate most of your content from a base language to other languages which works fine.
But since you always need your content to exist in a base language you are limited to only translating your website and not doing real i18n stuff like different content in different languages. The good thing about this is that the folks behind this plugin are working on that feature right now and since the plugin is hosted on GitHub you can help if you want.
That's all folks
We're really looking forward to build a lot more websites with OctoberCMS. And if you are a web developer you should really consider it when planning your next CMS project.