ShinyCMS is an open-source content management system built in Ruby on Rails, with support for themes, plugins, and cloud hosting.
It is designed for professional web developers to use as a platform when building content-managed websites for their clients. It provides a number of features 'out of the box', with an easy-to-use admin interface for your clients to use when updating their site. You can also write your own plugins to add custom functionality.
To build a basic site on top of ShinyCMS, you just need to know HTML and ERB well enough to make any custom page templates that your site needs, or to modify those provided (at least until more ready-made themes are available; themes are easy to make, and theme contributions are very welcome).
- Plugin architecture
- Load only the features you want; reduce in-memory size and attackable surface area
- Add custom functionality easily by writing your own plugins
- All features marked with ± below are provided by a plugin
- Themes (on the hosted site)
- Light-lift theme system - you can override just a few of the default partials if you want
- Two themes included; Halcyonic, for content-rich sites, and Coming Soon for pre-launch sites
- Pages ±
- Content-controlled 'brochure pages', with layout controlled by Page Templates
- Can be organised into Page Sections (nested to any depth), with dynamically generated menus
- Inserts ±
- Re-usable content fragments that can be pulled into any template on any page
- News section ±
- Blog ±
- Comments
- Ready to add to any content; enabled by default on blog posts and optionally on news posts
- Fully nested comment threads, so you can easily see who is replying to who at any level
- Email notifications of replies to comments and posts
- Uses reCAPTCHA to block bots, and Akismet to flag potential spam for moderation
- Spam moderation feature sends training data back to Akismet, to improve its accuracy in future
- Mailing lists ±
- Double opt-in, user subscription management, 'do not contact' feature
- Newsletters ±
- HTML mailshots, produced from MJML templates for cross-platform compatibility
- Basic form handlers ±
- e.g. 'email form data to site owner' - useful for contact and enquiry forms
- Site search ±
- Ready to support multiple search backends (default is pg_search multisearch)
- Tags
- Upvotes (AKA 'likes') on posts and comments
- User profile pages ±
- Links to user-provided content such as recent comments, recent blog posts, etc
- User accounts and administration
- Web interface for site settings and feature flags
- Built-in tracking of web stats and email stats (powered by Ahoy and Ahoy::Email)
- Build your own charts and dashboards for viewing and analyzing stats (powered by Blazer)
- All emails are generated from MJML templates, producing reliably cross-platform HTML emails
- Content Access Groups
- Control access to large items - file downloads, whole pages on the site
- Or smaller items within a page - specific images, page sections, even individual words
- Payment handling plugins
- Including recurring subscriptions to content access groups - AKA paid membership
- Online shop
- Support for multiple blogs on a single site (in progress)
- Algolia support for search plugin (in progress)
- Default dashboard and charts for Blazer
- More themes!
[docs.shinycms.org] is generated from the documentation included in /docs.
Please start by reading the installation guide (or tl,dr for the very short version).
Theme templates and sample data for a demo site are provided, so you can try all of the CMS features without doing any data-entry work first. You can run the demo site on a free Heroku plan, using the free/hobby pricing level for all the required dynos and add-ons.
You will need a webserver, a Postgres-compatible database server, and a Sidekiq-compatible caching service (e.g. Redis).
You will need a mail server if you intend to enable any of the features that send emails; user registrations, reply notifications, etc. Anything supported by ActionMailer should work.
All other supported external services are optional. If you add config details for them (in ENV / .env* files / Heroku config) then they will be used, otherwise either the related CMS features will be unavailable or they will have reduced functionality.
ShinyCMS requires Rails 6 (which in turn requires Ruby 2.5 or later), and generally uses the most recent stable release of both Ruby and Rails (currently Ruby 2.7.2 and Rails 6.0.3.4).
It has been tested on every release of Rails 6 so far, and with most versions of Ruby from 2.5.8 onwards (view recent test results for ruby 2.5.8, 2.6.6, and 2.7.2).
There are currently no plans to add support for Rails 5 or older Ruby versions.
If you're interested in contributing to ShinyCMS, please start by reading the developer documentation.
This project has a Code of Conduct, which is intended to make using ShinyCMS, or contributing to it, a harassment-free experience for everybody involved - regardless of who they are and what they do or don't know.
Please read and follow the code of conduct - thank you.
ShinyCMS is copyright 2009-2020 Denny de la Haye - https://denny.me
ShinyCMS is free software; you can redistribute it and/or modify it under the terms of the GPL (version 2 or later). There are copies of both v2 and v3 of the GPL in docs/Licensing, or you can read them online: https://opensource.org/licenses/gpl-2.0 / https://opensource.org/licenses/gpl-3.0
ShinyCMS includes code from other open source and free software projects, which have their own licensing terms; please read the licensing docs for more details.