Why we used Craft CMS to build a web application

The backend of the arvato brochure builder - the web application we built for them last year - is powered by Craft CMS. We haven’t seen much written about this type of use-case so I figured others might find it useful to hear more about the project.

Using a content management system essentially as a web development framework for a custom application is not something we’d always recommend but, as with many things these days, it depends.

Before going any further you might want to first read our launch post, "An online brochure builder for arvato", or watch this demonstration video showing the brochure builder in action.

The project requirements

We ran a requirements workshop with arvato and the high-level needs came down to this:

  1. Administrators of the tool would need to be able to manage other users. This would include inviting them into the system, granting them certain permissions, and editing/removing them as necessary.
  2. Administrators would also need to be able to manage the PDF inserts (small, 1 or 2 page PDFs). This would include uploading the PDF files and relating content to those files such as summaries, categories, and other associated metadata.
  3. Regular users would need to be able to sign in, using credentials provided by administrators, to access the tool, as well as manage their account as necessary.
  4. Regular users would also be able to “build” and download their own PDF brochures. The idea was that we’d provide an interface that enabled them to select from a library of inserts (small, 1 or 2 page PDFs), choose the order that they should appear, and then merge them into one optimised document ready to be downloaded.

As well as gathering the requirements, we also used this workshop to discuss any constraints of the project which might impact our decisions.

The major constraint that’s worth mentioning is that, due to the impending launch of their new global brand, we only had four weeks to launch a first release. Yeah, I know. This meant that which ever tools we did choose, we had to have complete confidence in them.

Could we use Craft CMS?

With not much time to accomplish what was needed we quickly moved on to talking about whether we could use any off-the-shelf products to speed up development.

Specifically we asked ourselves, what could we get out-of-the-box if we used our preferred content management system, Craft CMS?

  • Craft CMS would give us an instant control panel that we know editors love ✓
  • Craft’s built-in element types - entries, categories, assets - would give us the content model and flexibility we’d need ✓
  • Craft’s user-management and permissions system would be perfect for our requirements ✓
  • Craft's "bring-your-own HTML" modus operandi means it leave all the user interface decisions to us ✓

All looking good so far.

Just to be clear, Craft CMS is without doubt the most flexible and powerful content management system we’ve ever used. There’s no way we’d ever consider using Wordpress or similar off-the-shelf products for this type of web application.

While some people may say it could be done, for us the amount of manipulation and custom development required would come with too many disadvantages to make it a sensible decision.

What about custom development?

The brochure builder itself would require some custom development.

The interface was no problem - Craft's template system would give us all the flexibility we'd need - but the functionality to merge the PDFs into one would require a plugin.

Is this a disadvantage? Not really. Regardless of whether we used an off-the-shelf product or a PHP framework such as Laravel, the feature would still require some development effort. The questions we had to ask were can we develop this feature using Craft's plugin architecture, and are we making any sacrifices by doing so?

Depending on how much custom development your application requires, you also need to weigh this up against what you're getting out-of-the-box. A simple two-column list on paper is a great way of weighing this up.

Did we make the right decision?

We obviously chose Craft CMS as the platform to use for this project and never regretted that decision.

Here's a few notes about how things panned out:

  • The day after the requirements workshop I was able to install Craft, set up a basic content model and introduce the client to the control panel. They were inputting content by the end of the week.
  • We used Assets to store the PDF insert files but opted to relate those to Entries in a Section to include metadata such as titles, summaries and categories. We could have simply given our Assets the custom fields but we thought using a section gave us more flexibility and a better publishing workflow.
  • We used Categories to group PDF inserts by both the services arvato offer and sectors they work in.
  • We used Users to create and manage the application's users and grouped them by 'administrators' and 'regular' users.
  • Our custom plugin included a controller that handles the action of a user submitting their selected inserts. The controller gathers the posted data and saves it to a model. The model is then passed on to a service which uses a PHP library for merging multiple PDFs to build the brochure.
  • What happens next really confirmed Craft CMS as the right choice for this project. The generated PDF is then saved as a new Asset in Craft along with it's own metadata including when it was built, who build it and which PDF inserts were used.

This opened up lots of possibilities for future phases of development. We now have a future enhancements list including giving users a library of brochures they've build, allowing them to edit existing brochures, and exposing analytical data to administrators such as who's using the tool and which inserts are being used the most.

The results

All of this was done without feeling that we'd had to bend or manipulate the off-the-shelf product to do something it wasn't intended for, and without any scent of CMS Smell for the administrators or end-users.

If you need help making a similar decision as described above, or you're looking for a Craft CMS developer for your next project, I love to hear from you.