Crazy About Craft

A Review of Craft CMS & Tips to Get Started

February 27, 2015
Development, Front End, NMC, Footer

Eight years, hundreds of web projects, and a dozen content management systems later, NMC has largely standardized on three options: DrupalWordpress, and our own HiFi. The two open source options are popular, stable, mature, and boast active development communities. HiFi we've worked hard to make flexible, powerful, and intuitive. Now, we've made a whole bunch of sites with all three and our really clients like them — so why on earth write about how we just started working with another CMS? Because it's super great. Like, I'm-about-to-write-3000-words-about-it insanely great. 

Meet Craft CMS. It's sublime. We've used it on a few projects now and more and more, we want to use it for all the things. We just finished a big, custom eCommerce Craft website that would have been a nightmare with most any other CMS. But Craft let us spend more time delighting the client and less time fighting software. We delivered a better product, in less time, and with less effort. The client couldn't be happier. What’s not to love?

Craft is powerful and flexible enough to replace the need for either Wordpress or Drupal (which means less code to support), beautifully designed, easy for clients to learn and use, and a pleasure to build sites with. Beyond that, we like it because it’s modern, well-supported, actively updated, easy to deploy, easy to extend, and has built-in core features that would normally cost an arm and a leg in extra add-on fees for other CMS’s. I could go on and on. In fact, I'm about to:

7 Reasons to Love Building Websites with Craft

1. Consistent, Thoughtful Design

As a professional services agency, the products and solutions we provide our clients have to do more than just solve a problem, they should also be a delight to use, easy to learn, and fast to respond. Everything about Craft feels high-end: from its marketing site, to the custom illustration of its installation process, to its clear, elegant documentation pages, to the beautiful, responsive, total-lack-of-unnecessary-UI-chrome of its control panel, Craft's design and aesthetic is refined, consistent, and attractive. Attractive things work better. Less clutter means a shorter learning curve for clients.

Design isn't just aesthetics, though. Craft's control panel is sensibly divided into section types such as Singles (like the Home or Contact pages), Channels (anything that represents a feed of entries, like a blog or photo gallery) and Structures (ordered pages with an explicit hierarchy, like a site map). Assets like photos and videos get lovely grid and lists views and because they can be assigned custom fields, it’s easy to add data like location and caption. Together with the extraordinary Live Preview — which shows content changes on the page in real-time — publishing content is no longer a chore to be avoided.

Oh, and did I mention the control panel is responsive by default and has been localized into 16 languages? Now they're just showing off.

2. Exceptional Core Features

Craft is packed with features that normally would cost a small fortune in 3rd-party add-ons:

  • First and most important is Matrix, which allows for virtually unlimited flexibility in laying out complex web views. The Craft website has a short video describing it and A List Apart has a great feature on “long-form content” using it.
  • The rich text editor, Redactor, is best-in-class and easy to extend and customize. It makes it really easy to give clients the tools to edit content using the right brand-consistent CSS styles.
  • No need for a separate plugin to re-size uploaded images: it’s easy to apply transforms. You can set up some in advance or just make it up in your template on the fly.
  • “Relationships” are hard to do well in a CMS: they’re a kind of reverse-lookup for entries. The docs do a good job explaining how they work but don’t really tell the tale of how powerful and useful Craft’s implementation is. The fact that I can set “Entries” as a field-type that populates a drop-down with all the entries for the client to select is amazing.
  • It’s hard to imagine how you lived life before global custom fields. If you come from an ExpressionEngine background as I do, you know the pain of having to re-create identical fields for each channel / section! With Craft you can create some sensible defaults once and share them among all entries, adding only custom ones as necessary. Also, 18 different fields by default? Awesome.
  • Again, coming from an ExpressionEngine background, tags are not built-in as a first-party implementation (though there are a few really good plugins for it). Craft’s tags are built-in, can be created by clients dynamically, and are easily editable if you make a mistake.
  • Managing users in a CMS is typically a giant pain because they’re designed separately from the content itself. In Craft, because users are just another kind of entry in the system, they can be manipulated in templates like any other data object with the same syntax.
  • Did your site get fireballed and shut down? Or maybe your e-commerce site has a million visitors a day? Either way, you’ve got some serious image-serving needs, friend. And rather than deliver all those assets from your own web server, potentially racking up a ton of extra charges, or forcing you to pay for or create your own plugin, Craft lets you easily use a CDN like Amazon’s AWS, Rackspace, or Google Cloud Storage right from the control panel.
  • Craft’s drafts and entry-versioning approach is all you could ask for: when you save an entry, you can include a comment about those changes for the next editor and easily roll back to earlier versions.
  • Finally, Live Preview has to be seen to be believed — it really feels like the future. No more training clients to keep two tabs open and showing them how to edit, save, switch, refresh, lather, rinse, repeat.

3. Rapid Pace of Development

It’s nice to know that there’s a committed team of professionals constantly working to update the product. Browse the Craft Updates page and you’ll see that they’ve maintained a blistering pace of new features, bug fixes, and refinements. The team is incredibly responsive to support requests: send a tweet or post on the official help forum and you get replies right away.

Craft's developers have been able to accomplish so much in a short time because they made some smart decisions to off-load development of some of the underlying plumbing to other smart teams. For example, the PHP framework they used to write it (Yii) and the software package that powers the templating language (Twig) are modern, robust, popular, and themselves rigorously maintained and upgraded by other independent teams. Craft's developers avoid the overhead of developing all that foundation code themselves and instead focus on really improving their own product. Plus, whenever Yii or Twig gets updated, Pixel & Tonic can roll it into the latest Craft version, giving access to the new features to developers like us. The result is like having a much larger company but with smart employees... who work for free.

Good Code Libraries == Smart, Free Employees 

It doesn’t just end with Yii and Twig, though. Craft includes a number of other 3rd-party libraries that are frequently updated and that make Craft such a terrific product. Excellent libraries like:

4. Top-notch Support & Educational Resources

New software can be challenging to learn. With Craft, there’s no shortage of places to go to ask for help, look up an answer, or even watch a video tutorial:

If you’re just getting started, I recommend Jerome Coupe’s excellent beginner’s guide and Jake Chapman’s project boilerplate. Pixel & Tonic’s Brandon Kelly has a superb comparison of the difference in templating between ExpressionEngine & Craft and, of course, you can always hit up the #craftcms hashtag on twitter to ask questions and follow the latest.

4. Vibrant 3rd-Party Developer Community

When a lot of people are excited about making plugins for your software, it’s a good sign of the health of the product. A good ecosystem is essential for supplementing the software’s core features and makes the original more valuable (think Apple’s App Store). For being a relatively new CMS, there’s a ton of great, high-quality, and useful plugins available. And while there’s not (yet) an official plugin store or repository, the Straight Up Craft Plugin Directory is pretty close. Some of our favorites include:

  • Directory provides access to Straight Up Craft so you can browse and install plugins directly from the control panel
  • Charge is perfect for integrating Stripe for one-off payments and donations
  • Import allows you to import data from CSV files and map it to Craft fields
  • Typogrify prevents ugly apostrophes and widows
  • Control Panel CSS gives you easy access to styles to modify the control panel
  • Pimp My Matrix lets you sort Matrix block types into groups
  • Sprout Forms makes it easy to create multiple forms
  • Redactor Clips adds the “clips” plugin to insert predefined code snippets

5. Sensible Pricing

The free version of Craft, called Personal, comes with one user, one channel, five singles, and will be plenty adequate for a large majority of sites. Having a totally free-for-life version is great not just for clients’ pocket books but also for developers who want to download the software for their own use and learn how to develop with it.

There are two paid tiers: Client for $199 and Pro for $299, both exceptionally reasonable (especially if you’ve had clients paying $10,000+ per year per computer for a Microsoft license). The really great thing is you can use the Client or Pro versions for free when developing: if your local web development environment contains “craft.dev”, you’ll see a link in the footer to unlock all the features. Add as many subomains as you want, like site1.craft.dev, site2.craft.dev, and you can extend it indefinitely. Then, when you’re ready to deploy to production, you can pay for the commercial license (or bill the client!).

6. Easy for Web Developers to Implement & Deploy

It’s not just our clients that like it — Craft makes our lives as developers easier, as well:

Twig

At the heart of any CMS is how to fetch & display data from the database. Every CMS uses a different templating language and they are certainly not all created equal. ExpressionEngine, for example, has a simple and powerful syntax using {exp:channel:entries}. For all Wordpress’s strength, it altogether lacks a template language: developers just write raw PHP in the templates and even simple things like repeating calls to the Loop requires disappointing kludgy workarounds. A good CMS should abstract away the database call with simple, predictable, and flexible syntax.

That's where Twig comes in. You’ll hear a lot of developers sing its praises and rightly so. It’s powerful, concise, and expressive and supports all manner of cleverness like performing math calculations and text manipulation filters like upper and slice. Perhaps its best known and most useful feature is how it can extend one template from another, replacing selected regions of content and easily setting variables for use in either one. (And don’t forget macros! They’re like reusable bits of code that will seriously make your life easier.)

It does take a little getting used to but its appeal is undeniable: take a look through Twig’s examples and you’ll see what I mean. Craft’s creator, Brandon Kelly, has a nice starter guide called Twig for Designers and the Craft documentation includes a handy Twig Primer.

Multi-Environment Configuration

This is so killer. Web developers typically work on websites on their own computers, usually called “local”. Then they push the site — with the database — to a test server, known as “staging”. Assuming everything is copacetic, they deploy the site to “production” where it’s visible to the world. Normally, keeping track of all the settings as the site moves from spot to spot is a gigantic hassle. But Craft feels our pain and combines all the differences into a single configuration file. No muss, no fuss.

Dev Mode

Craft allows developers to set a flag in the configuration file so that the system knows it's under active development. The Dev Mode provides a whole suite of useful information and functions:

  • PHP errors and exceptions will be reported in the browser window, with a complete stack trace and code previews
  • Template syntax errors will be reported in the browser, with a preview of the offending template
  • Craft will log the database queries, POST data, active cookies, and active session variables to craft/storage/runtime/logs/craft.log
  • Twig’s dump() function will be enabled

Also, developers can export the database with one click (it's stored in craft/storage/backups/).

Easy Plugins

Last but not least, Craft’s plugin architecture is transcendent, which comes as little surprise inasmuch as the makers of Craft started as pro ExpressionEngine developers. (My guess is they saw Craft as an opportunity to make a CMS that made it as easy as possible for people like themselves to write new plugins.)

Craft makes all of its core services available to developers so that it’s easy to extend the functionality: for example, if one of the 18 field types that Craft comes with isn’t enough, plugins make it easy to add another. The class reference is sensible and straightforward which means that you don’t need to be a back-end developer to supplement your project with extra functionality. The ease of plugin development is no doubt a large part of why there are so many good ones.

7. One-click Updating

‘Nuff said.

Bonus Reason: Smart People Like It

You know, great minds and all that:

  • Happy Cog: “Add new fields on a shared development server, download the database from the admin panel, then update your local database. Easy breezy.”
  • A List Apart: “I use the Matrix field to drive longform content on my own site, and you can see how much flexibility it gives me to create interesting layouts filled with images with captions, quotes with citations, and more.”
  • Taecho Group: “The range of built in field types cover nearly every content scenario.”
  • Made by Kind: "Craft’s clean and flexible templating system allows us to then output that data exactly as we wish, allowing us to achieve very the highest level of interface polish."
  • Viget: “[W]hile you are creating an entry, you can click on Live Preview to bring up a split-screen view that lets you edit and view your changes as you type. You can also generate shareable URLs so others can view the entry as it would appear on the page before publishing it.”
  • Matt Wilcox: “Craft doesn't assume you'll be wanting a blog, or that you'll want to work in one particular way. It just provides a really solid, flexible, intuitive, and well documented set of tools to let you build your own thing.”

And Yet, No CMS is Perfect

Just because we’re big fans — and excited about Craft’s potential — doesn’t mean we’re oblivious to its shortcomings. Here’s how we think Craft could improve:

Multi-site Manager

ExpressionEngine has had a multi-site manager for years; it allows you to run the same CMS across multiple domains. This means clients only have to manage one login for several properties and is relatively rare as far as CMS’s go. I’ve heard that they’ve considered it; in fact, early versions of Craft had this functionality but that it proved to complex and buggy. Maybe some day soon! But as it stands, you need one license per domain and multiple logins.

Official Plugin Directory

The Straight Up Craft directory is good but an official one from the makers of Craft would be even better. There are rumors it’s in the works — not just an official plugin store, but one that’s built into Craft’s control panel where you can browse, buy, and install right from the dashboard. Popular developer of Craft plugins, Dukt (he of the Plugin Directory, um, plugin) was recently hired to work for Craft full-time — probably to work on this.

E-commerce Plugin

This is the big one! Though to be fair, this is no flaw of Craft itself. But for software as powerful and easy to extend as Craft, it’s surprising that there’s no great, go-to e-commerce and shopping cart plugin yet (we wrote our own for Fleet Feet Sports). There are some developers actively working on a solution but it’s not available yet and as it is right now, developers are limited to one-off charges or integrating 3rd-party JavaScript solutions like SnipCart or FoxyCart. My wish? Something like Expresso Store for Craft!

We Think You'll Be Crazy About Craft, Too

NMC knows a thing or two about CMS's: in fact, that’s how it all got started. Waaaaay back in 2006, two of NMC's founders developed one while completing computer science degrees that was so promising they were awarded seed money to start a company around it. That software eventually became HiFi, our in-house CMS, which currently powers more than 500 of our clients' websites. The right CMS can make a big difference.

That's why when it comes to technology, we think a lot about what we use and recommend. Wordpress and Drupal are common in our law firm websites and nonprofit website markets, respectively, and a few years ago we used to use ExpressionEngine (that’s for another blog post). Multiple CMS competence is a lot to keep up with so most firms specialize in a single one to reduce overhead. When Craft came along, the initial idea of trying out Yet Another CMS wasn’t super attractive.

But once we started using Craft, we want to use it more and more. Craft’s developers have done an exceptional job balancing the right combination of power, simplicity, and flexibility. Good CMS’s are hard to find! If you haven’t tried it out, definitely give it a shot — you can even give it a spin with a live demo site to fool around with. If you have, what’s been your experience with Craft? Let us know in the comments.

Comments

Natetronn's avatar
Natetronn
Sigma, that's a good question, actually.

Craft is BYOH (Bring Your Own HTML) and doesn't care if your site is made out of tables like it's 1999 (let's hope not!) or if your site is fully responsive and has 6 breakpoints (e.g.) It's a blank slate. This is why it is very popular with Agencies who offer custom solutions to their clients (vs reskinning WP themes.) Really, do what ever you want.

In fact, you can be a "wuss" if you want to. Buy a HTML template on Themeforest or grab a free one from HTML5Up.net and use it with Craft. You could even take any Wordpress theme's HTML (or other CMS) and convert it to Craft. It's totally possible.

There are countless websites that are responsive and use Craft. http://www.agathachristie.com for example is a good example. You can even use Craft as a backend for mobile iPhone apps and the like if you really want to get crazy. For example, PBS Kids Games uses Craft: https://itunes.apple.com/us/app/pbs-kids-games/id1050773989 - I realize this is beyond what you're planning on using Craft for but, I did want to point it out just the same.
Sigma's avatar
Sigma
Sorry if this is a dumb question (but I have more of those if you're looking for any!), but I haven't been able to find much on websites built on Craft being responsive. I can see that their backend office is, which is great, but what are the resources available for making sure that the sites built on Craft look good on mobile as well as desktop?

I've used Wordpress most of the time so admittedly I have really little experience. But when you check out themes, you can always preview and see how they look on different devices. (Craft's own site says themes are for wussies so I'm fully admitting here to being a wuss. I'd like to get better! But it's gonna be slow. :) )
Clay S's avatar
Clay S NMC team member
Hey Kate,

It's a great question. If you're talking about ongoing maintenance (posting new content, updating copy, building new sections, etc.), then I think Craft would be a good fit. You need some technical know-how, and typically a web dev team like us, to actually build a site on Craft and get the templates setup. However, once it's hooked up to the CMS, you don't need any real HTML experience to be able to add and edit content -- it's all done through an easy text editor that resembles Microsoft Word. I hope that helps!
Kate's avatar
Kate
Great article! I'm wondering if someone with very basic HTML skills could use this efficiently. I'm a technical writer/content manager and we were just about to implement this at my last job before I left for a new one. My new job has tasked with finding the right CMS for our first ever knowledge base and I'm very interested in suggesting Craft. My only dilemma is I don't have great access to developers as our Dev team is in the UK (I'm in NYC).
I have some experience with HTML as well as markdown and using some other developer tools. Do you think this would be a viable option?
Andrea Boundy's avatar
Andrea Boundy
Stumbled across this blog post, after reading your much older 'Our Optimal EE Install' post. We're just beginning to play with EE to see if we bring it into our fold for CMS systems as our go-to for larger and complex sites, am now wondering whether we should also seriously look at Craft. Would you be happy to elaborate a little more on what made you drop EE originally and what you see as some key differences/benefits of Craft over EE?

Cheers!
Barry's avatar
Barry
Good review. I'm new to Craft, but I'm going to learn this. I was going to give my time to ExpressionEngine, but Craft may be more worthwhile.
disposable shoe covers's avatar
disposable shoe covers
What's up Dear, are you actually visiting this website daily,
if so afterward you will absolutely take nice experience.
Keith's avatar
Keith
Great review!
I've used Wordpress for projects here and there in the past. I'm looking to get into web development as a freelancer creating websites for companies. Would knowledge of HTML5 CSS3 Bootstrap and Craft CMS be enough to create custom websites?
Dave's avatar
Dave
Great review. Ultimately, Craft just feels right.

I kind of walked into WordPress many moons ago, back when Moveable Type was still a thing. It was something I heard about. Time marched on and I was never really happy with the way WP worked and the way it was evolving. As you mentioned Nathan, to make something custom that you're going hand off to a client that they're paying good money for, you really needed to get your hands dirty and hack around a bit.

Seeing how clients react when you show them how to do something can be both humbling and frustrating. I've tinkered with dozens of other systems, including Concrete 5, Drupal, Joomla, ModX, ProcessWire, ExpressionEngine, etc. but WP's ease of use and familiarity kept pulling me back in. I'd always put myself in the clients' shoes—will they be able to use this after I've done with it—and WP ultimately ticked that box better than the others (oftentimes much better... only a developer's mother could love Modx IMO!).

Then Craft came along. It was too new to start using on client sites and in particular the packages concept in version 1 and its licensing didn't really jive with me so I set it aside for the time being. However, it spoke to me and said "let's see what happens with this." When version 2 came out, P&T revised everything about the licensing and it was mature enough to start using on client builds. It seems a lot of developers were thinking the same thing; the unofficial plugin repo went from a dozen plugins to over 200! As we've all done I'm sure, I look back on some older projects and I think "xxx in Craft would have handled this much better." P&T genuinely seem to care about listening to their users with changes coming fast and furious, can't wait to see what Craft 3 holds!

Many people will argue Craft is not open source and there's so many good and free options out there, why would you want to pay to play? We all know the FOSS vs proprietary arguments so it's frivolous to rehash here but I think P&T have walked a workable line with who they're actually targeting as users/developers vs just any old enthusiast who wants to put up a website. At the end of the day, It's nice to help put food on someone else's table that helps put food on mine. You see so many good open source projects languish because the developer either moved on or wasn't benefiting from the project financially so that's somewhat of a driving force to pay for good software.

As an aside, it will be interesting to see how many Craft developers will start charging for their wares once the Craft 3 store opens up... you also walk the fine line between supporting a developer and the platform becoming a huge money pit. But where I think Craft excels in that it's attracting a class of users who are used to a higher barrier of entry. In WP land, you constantly see novice users buying plugins and asking where to insert some basic CSS to help integrate into their store bought theme. As P&T cheekily points out, themes are for wussies! In Craft there's no such thing as a theme and that kind of makes a world of difference when it comes to support.
Gletzer's avatar
Gletzer
@ Natetronn thanks very much for your good reply. Feel I needed to at least ask about and get some kind of feedback before putting the time into testing Craft cms thoroughly, which I think I will do now as everyone talks so amazing positive about Craft cms.. .. as I really want to experience a more modern cms. Currently one of my main gripes with Drupal is it's method of themeing, find it such an overkill to work with. Also there is very little room for experimentation, which my editors are endlessly doing, which I feel Craft cms suits us so much better for, as we deal with much content. But as you mentioned with the plugins, that might be an issue. Thanks again.
Natetronn's avatar
Natetronn
@Nathan, great article by the way! I look forward to reading more from you about Craft in the future.
Natetronn's avatar
Natetronn
P.s. as we anything new there comes with it a learning curve though, if you're coming for a Drupal background, which has a super steep learning curve, then I think it's safe to assume you'll power through any Craft learning curve like a knife cuts through melted butter or however that saying goes ;-)
Natetronn's avatar
Natetronn
@Gletzer for what ever it's worth, I think you'll be pleasantly surprised by how powerful Craft is coming from Drupal yet, at the same time, realize how much more simpler and more strait forward it is; both for you as the developer and for you're editors/admins.

Drupal, and Wordpress for that matter, are both overkill from the start where Craft is only as overkill as you want it to be i.e. it starts basic and vanilla but, still allows you to build up per the project requirements so every project gets all of what it needs and none of what it doesn't.

It starts basic but, is super powerful and is only limited by the developer who builds with it. That of course could be said about all of the CMS and everything else of course but, chances are you'll see my point if/when you start using it.

As the article points out, there are no CMS which are perfect and there is always room for improvement etc. but, again, it really does make sense for you (and your clients) to be allowed to build a project in the "ground up" manner. This is something which Craft allows you to do from the most basic starting point and that really is amazing.

I say all this without seeing the project requirements of course so, you'll have to make a list of said requirements and check each one of those off the list to the best of your ability, as per you're needs and as it relates to Craft and plugins.

On that note, there aren't as many plugins that exist as there are with the big three CMS communities but, this in itself may not be an issue for your Audiobook project. There are a ton of plugins in the other systems which Craft has eliminated the necessity for.

So, as long as there isn't a requirement for a plugin which today doesn't exist for Craft or which you couldn't just build yourself then there probably isn't any reason not to use Craft, today.

It really is a great CMS but, don't take my word for it, give it a try for yourself. Chances are you'll see exactly what all the fuss is about. :-)
Gletzer's avatar
Gletzer
I have been looking at Craft cms alot the last weeks but still have not taken the plunge of setting up a site with it. I am working on new site which is an audiobook site with well over a 1000 audiobooks. The site needs a complete overhall and I will be setting it up from scratch. I have been using Drupal for a few years and find it would be a bit of an overkill for this site. Besides I generally do not enjoy much working in Drupal, for all the known reasons. As the audiobook site is fairly basic in structure and needs and I want something easy to work with for me and especially for my editors. I am wondering if I should go for Craft cms or better to look to Wordpress for this project?
ps. I have no experience with Wordrpess.. and am a bit excited to try Craft cms. But as usual want the right tool for the job. As you can read I am a bit lost on comparing the two together.
Nathan's avatar
Nathan
@Mark Thanks! We tried to be thorough. For non-db CMS's, Statamic is also tops in our book.

@Michael Glad you've had a good experience. Re: filtering module, I'm not sure what you mean. Could you be more specific? Happy to help.
Michael Thomas's avatar
Michael Thomas
My firm has been full speed ahead with Craft since we got started. Now after our third site, we feel comfortable with how we want to use it moving forward. Every CMS has a path of least resistance, and finding Craft's was the easiest I've ever experienced.

I was struck by the filtering module you used on Fleet Feet, could you share how you set that up? Was it by custom plugin or by tricky twig templating?

Thanks!
Mark's avatar
Mark
Best review on craft cms so far. I've used EE in the past, see no reasons to use it nowadays, which is sad :(

I also use Statamic for websites that requires less functionality and easy, and fast deployment.

Leave a comment