A few months ago I started to reevaluate the content-management-systems I've already used in conjunction with rails (RefineryCMS and LocomotiveCMS so far). And decided to try something new.

The requirements

My requirements for a new content-management-system were:

  • Fits into my current tech-stack (Rails)
  • Is actively maintained
  • Is easy customizable (can be extended within Rails)
  • Limits the user to only edit and add content which does not destroy the design (no "I can edit all with my WYSIWYG editor" implementations)
  • With a preview or in-place-editing
  • Nice to have: Image-Cropping (User), Versioning, Publish-Workflow, Form-Builder, User-Management (Backend and Frontend)

The quest

I started my quest with the usual google-search:
"best rails cms", "ruby on rails cms", "ruby cms", etc.

After reading through a lot of old comparison-lists and suggestions to use Wordpress on Stackoverflow (ugh), I stumbled upon the good old ruby-toolbox. I decided to give it a try and headed to the Content Management & Blogging category.

I just scrolled down and looked at every project who was at least stated as "Active". After the usual suspects (RefineryCMS and LocomotiveCMS) I stumbled upon a smaller project (in terms of the ruby-toolbox popularity rating) who was "Very active": AlchemyCMS.

I headed to the website and to the github-repo peeked into the code and issues and decided to just try it. A very good decision!

The bounty

AlchemyCMS has a unique concept and is built up like, as the name says, chemistry kit.

On the deepest level you define essences. Essences are for example: A text-element, a picture a richtext-element, a link and so on. You mix these essences together to an element.
Then you can define page-layouts and place elements directly into it or into an additional separation called cells.

That's it about the core-concept, if you want and in-depth explanation, I suggest to start with the guides here.

The likes

What I really, really like about AlchemyCMS is the fact, that it's just a plain old rails-engine. You plug it into your app and you have a fully-functional cms. If you want to get fancy, you can use it just as admin-backend (replacing ActiveAdmin for example) and plug in your models in to the crud built by Alchemy.

As essences are very low-level you can easily create any kind of layout and make any part editable. Additionally it's possible to create own essences or let existing models act as essences.

Besides the cool core-concept with essences, elements, cells and page-layouts there are many more features already built-in, here are the ones I like the most:

  • side-by-side edit view (with screen-size adjustments) Editing a Reference on zimal.ch
  • image cropper
  • easily add an image-gallery to any element
  • every element defines two view-partials: the editor-view and the frontend-view (so you can adjust the view shown in the editor)
  • multi-page integration
  • multi-language integration
  • user-management (with alchemy-devise or integrate it with your own)
  • user authorization with cancancan (you can overwrite the ability.rb easily in your project)
  • built-in contact-form
  • show and hide any element on any page
  • global pages to define reusable or fixed elements
  • Meta title and description for every page, fallback to root-page if there is nothing defined
  • protected pages (only accessible when logged in as a member)
  • and many more

The end (?)

That's just a short introduction of the features in AlchemyCMS. My next post will be about the complete process from a screen-design to a finished website based on AlchemyCMS - stay tuned!

One last thing: My currently new published website zimal.ch was initially built on LocomotiveCMS. After showing it to the end-user and teach him how to use the cms - I was desperately disappointed with the implementation. I got back to my laptop and moved the hole site to AlchemyCMS within 3-4 hours!
It was a breeze and besides the benefits from AlchemyCMS I got a lot more of just moving it to a "normal" Rails implementation. I will definitely move all my existing pages to AlchemyCMS in the next few weeks...