Craft CMS

CraftCMS is a fast-growing content management system that's gaining accolades for being both developer- and editor-friendly. We're gaining experience in this technology platform and we've found it to have some interesting features that are different from other platforms we use:

  • There is no built in front end UX. This means you get to build it yourself. With great power comes great responsibility, but also great flexibility.
  • It's built on multiple open source frameworks, including redactor for WYSIWYG editing, twig (for the front end template engine) and yii (for server side logic). This means that there is more documentation, but also that there are more places to look; the CraftCMS documentation is not a one stop shop.
  • Craft is commercial software. This means you pay for it on an annual basis. This is good because it means there is a company pushing development forward and the chance of the software being abandoned is very low. The fee is reasonable.
  • Because it is built on Yii, it gets a number of great features from that framework. Top among them is migrations, which let you automate code to be run once and only once. More thoughts on CraftCMS migrations.
  • Update reminders are built in, and it uses composer to manage dependencies. We've used many dependency management tools and they all share the same thing in common: they are far better than manual dependency management.
  • There is a vibrant plugin ecosystem. Some plugins are free, others cost money, but there are a wide variety. The one wrinkle we've noticed is that many plugins are available for the earlier version of Craft. Given that CraftCMS v3 was released in Apri 2018, this is understandable and will likely be the case for a year or two. Plugins are also managed via composer. You can also build your own plugins if you like.
  • There is a welcoming community both on slack and an independent stack overflow site. We've posted questions to the stack site and gotten answers within 24 hours, which is great for a small focused stack overflow site.
  • The source for CraftCMS is available. This means that when you need to understand how something works, you can take a look. You can even, as we have, submit a PR.
  • The native editor experience is great, and includes a live preview in a split screen.
  • New content types are easy to build and very flexible. Almost too flexible, as you have a number of choices--what section type (channel, structure or single), what fields go on each section, what fields are shared, do you need multiple entry types or can each section have one, and how do entries relate to each other. All this, again, gives you a lot of responsibility for choosing the right models.

In the end, CraftCMS is worth a look. It fits nicely between Wordpress and Drupal in terms of the amount of development effort needed to build out a production ready solution. CraftCMS is definitely more of a "bring your tools" solution than either of them, however. This is partly a strategic differentiation choice by the maintainers and partly a function of the age of the platform. Even though there are some plugins, don't choose CraftCMS unless you are ready to roll up your sleeves and sling some CSS and HTML (or you are ready to hire someone to do so). However, this control can produce beautiful maintainable fast sites.

You will also need to experiment, especially if you are writing back end code. The CraftCMS documentation for building out the front end is pretty good. For the back end, you have API documentation, but oftentimes when looking around it you are shunted off to the Yii documentation and have to jump back and forth between the base Yii framework and the CraftCMS additions. As one of the team put it, CraftCMS isn't like some other frameworks where you can google something and one hundred other people will have had the exact same problem.

We'd reach for CraftCMS if there was a need for a fine crafted front end experience and the content model was sufficiently complex. We'd avoid CraftCMS if there was a large number of third party integrations--in that case one of the more established CMSes would be a better fit.

CraftCMS is definitely not as popular as other frameworks we use, but if the client problems fit its strengths, CraftCMS is a great tool to build beautiful technology.