A CMS that anyone can use, even if they only use it once a month.
Ruby HTML JavaScript CSS Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
config
db/migrate
docker
lib
script
test
.gitignore
.ruby-version
Dockerfile
Gemfile
README.rdoc
Rakefile
docker-compose.override.yml.example
docker-compose.yml
imagine_cms.gemspec
license.txt

README.rdoc

About Imagine CMS

Imagine CMS is a web content management system developed by Bigger Bird Creative, Inc. in 2006 for its clients. Other CMSes came with a learning curve: not a problem for daily users, but clients who only used it once a month or so would forget everything by the next time they logged in. Simpler systems didn't have enough functionality to allow us to do what we wanted to do as designers and developers. Thus, we created a CMS that is easy for clients to use, stays out of our way, and provides useful automation.

Demo

Working on this… it needs to be fairly resilient to hacking attempts, not a trivial thing to set up.

History and Roadmap

Imagine was created in the Rails 1.0 days, to run a large number of technically simple content-based sites (versus the one or two highly customized web applications most Rails developers were building at the time). We wanted to provide a way to create and manage static content while also allowing some automation (navigation, RSS feeds, etc.) while also allowing limitless custom development. However, because plugins/engines were quite limited in those days, Imagine was implemented by monkey-patching core parts of Rails and creating a new framework on top of Rails. Although this allowed us great insight into the inner workings of Rails (and led to a minor contribution to Rails core), this approach proved extremely difficult to port to Rails 2. Thus, sites using Imagine have been stuck on Rails 1.2 since time immemorial.

All that is now firmly in the past. By extracting Imagine functionality into a gem (a Rails Engine), we have achieved compatibility with Rails 3.2 and Ruby 1.9 and removed roadblocks to a future upgrade to Rails 4 and Ruby 2, all while remaining backwards compatible with the legacy Imagine CMS database structure.

  • Imagine 3.0 (Rails 3.2, Ruby 1.9/2.0): [DONE, v3.0-stable] 100% restored functionality (plus a few extras and fixes), no database changes.

  • Imagine 4.0 (Rails 4.0, Ruby 2.1): [DONE, v4.0-stable] Compatibility with Rails 4.0

  • Imagine 4.1 (Rails 4.1, Ruby 2.1): [DONE, v4.1-stable] Compatibility with Rails 4.1

  • Imagine 4.2 (Rails 4.2, Ruby 2.2): [DONE, v4.2-stable] Compatibility with Rails 4.2, many minor fixes and UI improvements

  • Imagine 5.0 (Rails 5.0, Ruby 2.2): [SKIPPED] Compatibility with Rails 5.0

  • Imagine 5.1 (Rails 5.1, Ruby 2.4): [SKIPPED] Compatibility with Rails 5.1

  • Imagine 5.2 (Rails 5.2, Ruby 2.5): [in progress] Compatibility with Rails 5.2, CKEditor

In the future, there are plans to:

  • refactor & rewrite the oldest parts (substitutions, galleries)

  • drop ERB templating for something safer

  • drop Prototype for vanilla JS

  • modernize the HTML, CSS, JS bits

However, this will probably require forking off a separate project (imagine_cms_classic?) to avoid breaking existing sites, while also keeping up with Rails updates.

(Imagine 1.x and 2.x version numbers have already been used internally, so we started at 3.0.)

Current Status

Imagine 4.2 is ready for production use (v4.2-stable branch). Imagine 3 is also available for apps tied to Rails 3.2 (v3.0-stable branch).

Imagine 5.1 is in progress on master.

One major feature from the old days is still missing: browser-based editing of view layouts and stylesheets. While convenient, this was probably not ever a good idea, so we're working on a better solution. We've also added a new feature, uploaded images and files can be stored on S3 (galleries still live on the local disk, so in a multiple app server setup, a shared filesystem is required).

Unless you are already familiar with Imagine and/or interested in contributing to development, this project is not suitable for wider use just yet. Why? Well, the purpose of the Imagine gem at this point is strictly to upgrade legacy sites to modern versions of Rails as simply as possible. Until imagine_cms_classic is forked, this project will be held back by its need to remain compatible with legacy installations dating back to 2006. The ERB templating language can be dangerous (it allows all Ruby, including shell escapes), and the editor (powered by an ancient version of Dojo) is still Firefox-only. It also uses Prototype, which has become a bit unfashionable these days.

If we can make a clean break from all of these “traditions,” that will be a good time to get on board.

Hosting

Imagine can run on most “standard” Rails hosting platforms, anything that uses Passenger, Unicorn, Puma, etc. On hosts that don't allow (or recommend) writing to the local filesystem (e.g. Heroku) you won't be able to use photo galleries or page caching, but other features should work (note: this has not been tested in production).

Getting Help

Get paid support and hosting for Imagine CMS straight from the people who made it: Bigger Bird Creative, Inc. Neither is required, of course. :-) (Free support via Issues.)

Customizing & Contributing

Pull requests always appreciated (recommend getting in touch first). If companies or individuals are willing to sponsor major features on the roadmap (or features that meet their own needs) development can proceed more quickly.