alchemy_cms is a free, open source content management systems (cms) project written in Ruby and released under BSD-3-Clause. It has 905 GitHub stars, 324 forks and 8 open issues, and was last pushed 7 hours ago. On this registry it ranks #50 of 66 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available.

AlchemyCMS

Build & Test Brakeman Scan Lint

Gem Version codecov Depfu

Backers on Open Collective Sponsors on Open Collective Open Source Helpers

Alchemy is an open source CMS engine written in Ruby on Rails.

Read more about Alchemy on the website and in the guidelines.

[!CAUTION] This main branch is a development branch that can contain bugs.

For productive environments you should use the current Ruby gem version, or the latest stable branch (8.0-stable).**

🏆 Main sponsor

BLISH Logo

✅ Features

  • Flexible templating that separates content from markup
  • A rich RESTful API
  • Intuitive admin interface with live preview
  • Multi language and multi domain
  • Page versioning
  • SEO friendly urls
  • User Access Control
  • Build in contact form mailer
  • Attachments and downloads
  • On-the-fly image cropping and resizing
  • Extendable via Rails engines
  • Integrates into existing Rails Apps
  • Resourceful Rails admin
  • Flexible caching
  • Hostable on any Server that supports Ruby on Rails, a SQL Database and ImageMagick

🎮 Demo

Visit the existing demo at https://demo.alchemy-cms.com/

  • Login: demo
  • Password: demo123

🚂 Rails Version

This version of AlchemyCMS runs with >= Rails 7.2

[!NOTE] For Rails >= 8, use Alchemy version >= 8.0.0a which comes with propshaft support. If you are on Rails >= 8 with an older Alchemy version, you will need to temporarily comment out the propshaft gem.

💎 Ruby Version

Alchemy runs with Ruby >= 3.1.0 including 4.0.

For a Ruby 3.0 compatible version use the 7.2-stable branch.

For a Ruby 2.4 compatible version use the 5.2-stable branch.

For a Ruby 2.2 compatible version use the 4.1-stable branch.

For a Ruby 2.1 compatible version use the 3.6-stable branch.

For a Ruby 2.0.0 compatible version use the 3.2-stable branch.

For a Ruby 1.9.3 compatible version use the 3.1-stable branch.

For a Ruby 1.8.7 compatible version use the 2.3-stable branch.

⌨️ Installation

Stand Alone Installation

If you do not have a Rails project yet or just want to check out Alchemy, then use this Rails template.

Make sure you have Rails installed first:

$ gem install rails

Then create a new Rails project with:

$ rails new -m https://raw.githubusercontent.com/AlchemyCMS/rails-templates/master/all.rb <MY-PROJECT-NAME>

and follow the on screen instructions.

Manual Installation

If you want to manually install Alchemy into your Rails project follow these steps.

Add the Alchemy gem:

Put Alchemy into your Gemfile with:

$ bundle add alchemy_cms
Set the authentication user

Now you have to decide, if you want to use your own user model or if you want to use the Devise based user model that Alchemy provides and was extracted into its own gem.

Use Alchemy user

If you don't have your own user class, you can use the Alchemy user model. Just add the following gem into your Gemfile:

$ bundle add alchemy-devise

Then run the alchemy-devise installer:

$ bin/rails g alchemy:devise:install
Use your User model

In order to use your own user model you need to tell Alchemy about it.

The best practice is to use an initializer:

# config/initializers/alchemy.rb
Alchemy.configure do |config|
  config.user_class          = 'YourUserClass'          # This has to be configured
  config.current_user_method = 'current_admin_user'     # Defaults to 'current_user'
  config.signup_path         = '/your/signup/path'      # Defaults to '/signup'
  config.login_path          = '/your/login/path'       # Defaults to '/login'
  config.logout_path         = '/your/logout/path'      # Defaults to '/logout'
  config.logout_method       = 'http_verb_for_logout'   # Defaults to 'delete'
  config.unauthorized_path   = '/some/public/page'      # Defaults to '/'
end

Alchemy needs a alchemy_roles column in your database for the RBAC to work.

Alchemy provides a migration generator that adds these tables to your users table.

$ bin/rails g alchemy:user_columns_migration --table-name=my-users-table

Then include this module in your model.

class User
  include Alchemy::UserMethods
end

Please follow this guide for further instructions on how to customize your user class even more.

4. Install Alchemy into your app:

After you set the user model you need to run the Alchemy install task:

$ bin/rails alchemy:install

Now everything should be set up and you should be able to visit the Alchemy Dashboard at:

*) Use your custom path if you mounted Alchemy at something else then '/'

🏗 Customization

Alchemy has very flexible ways to organize and manage content. Please be sure to read the introduction guide in order to understand the basic idea of how Alchemy works.

Custom Controllers

Beginning with Alchemy 3.1 we do not patch the ApplicationController anymore. If you have controllers that loads Alchemy content or uses Alchemy helpers in the views (i.e. render_menu or render_elements) you can either inherit from Alchemy::BaseController or you include Alchemy::ControllerActions in your controller (that's the recommended way).

Custom admin interface routing

By default, Alchemy Dashboard is accessible at <http://example.com/a

readme truncated — read the full docs on github

Frequently asked questions

Is alchemy_cms free to use?

alchemy_cms is open source under the BSD-3-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does alchemy_cms do?

Alchemy is the Open Source Rails CMS framework for the component based web that can be used as classic server side rendered or headless CMS.

What is alchemy_cms written in?

alchemy_cms is primarily written in Ruby. Its source is publicly available at https://github.com/AlchemyCMS/alchemy_cms, and it has 905 GitHub stars.