My kingdom for a CMS
by Hammy Goonan
2 October 2018
Make no mistake, Content Management Systems (CMSs) are hard. There are compromises to be made and functionality requirements above and beyond what the CMS can do without being extended.
In other words, there are a lot of square pegs in round holes.
At Liquorice, we recently made the decision to retire our in-house CMS, Aniseed. It served us well over the years, but many of the problems it was built to solve are now standard features in modern CMSs. So, with a heavy heart, we decided to put it to bed and began an extensive search for a new CMS. In the end, we landed on Wagtail CMS (with the occasional Wordpress site thrown in for good measure).
So, why Wagtail? It caught our attention for a few reasons, not least of which being that it is used by NASA as well as the world’s largest organisation, the UK’s NHS.
There was a range of other factors as well, though.
Wagtail’s killer feature is its ‘Stream Fields’. They’re essentially blocks that can be added to the body of a page. A user can add as many blocks as they like to a page, in any order they like, and reorder them as they please. But more importantly, your friendly developers (the Liquorice digital team) can create custom blocks for specific page modules.
The advantage of these is that they enable a high level of flexibility while maintaining some control over the layout of the page. This helps us avoid a situation where the site’s design is broken because an editor has been a bit creative with some HTML.
This idea of maintaining control is neatly captured on the Wagtail CMS website in their Zen of Wagtail which the more technically-minded of you might enjoy.
Built on Django
Ok, we’re getting a bit nerdy here but stay with me. Wagtail is built on top of a Web Framework called Django. What’s a ‘Web Framework’? In the programming world, a framework is something that does all the simple repetitive things for you. Every website needs to be able to connect to a database, manage user logins and output HTML templates. A framework is something that comes prepackaged with all the most common elements already built in, so that we can get in there and start doing the interesting stuff like actually making a website.
Django is, in our opinion, a particularly good framework. So, we were excited to find a really nice CMS that has been built on a powerful framework that we already know and love.
The real beauty of this combination is flexibility. Plenty of the websites we build these days are complex systems with user login areas, forms, lots of data and so on. But they also have a public-facing marketing site that requires a CMS. Now we’re able to build the CMS with Wagtail and utilise the underlying power of Django to build the rest of the site.
So, when the Alcohol and Drug Foundation needed a website for their Community Hub that had a public facing marketing site but also a member-only forum and system for groups to report on their activity, we were able to build it with Wagtail and use Django for the member-only sections.
The other great thing about Wagtail is that it's open source. This means that the code is publicly available but, more importantly, it means that you’re not locked into one vendor, that the project will continue to grow and be maintained. It also generally results in a higher level of security, and Django is very secure.
Let me count the ways
We’ve already established that it’s powerful, flexible and open source, but it also has a beautiful user interface, plays well with Content Delivery Networks, is fast and is backed by a major UK agency. We love it and so do a growing number of our clients.
We do a lot of CMS work at Liquorice. When a business or community organisation goes through a branding exercise with us, they invariably need a new website to reflect this new brand. They are great opportunities for us to get the whole agency involved in a project.
Wagtail is making our lives and our clients’ lives easier by allowing us to create websites that are both beautifully crafted and easy for our clients to manage.