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, generated from MJML templates for cross-platform compatibility
- Basic form handlers ±
- Access control ±
- Create access groups, and add/remove members from them,
- Use the
current_user_can_access?( :group_name )
helper to show/hide content
- Site search ±
- Ready to support multiple search backends (default is pg_search multisearch)
- Tags
- Upvotes (AKA 'likes') on posts and comments
- Supports downvotes too, if you want a full rating/ranking system
- User profile pages ±
- With links to user-generated content such as recent comments, recent blog posts, etc
- User accounts and administration
- Web interface for site settings and feature flags
- All emails are generated from MJML templates, producing more reliably cross-platform HTML emails
- 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)
- Default config includes a dozen useful charts and queries to get you started
- Payment handling plugins
- Including recurring subscriptions to Access Groups - AKA paid membership
- Online shop
- Support for multiple blogs on a single site (in progress)
- Algolia support for search plugin (in progress)
- More themes!
- Markdown: /docs
- Website: docs.shinycms.org (generated from /docs)
Please start by reading the installation guide (tl,dr).
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 locally or on a free Heroku plan.
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 the related CMS features will be unavailable or 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.1.0).
It has been tested on most Ruby versions from 2.5.8 onwards, and every release of Rails 6 so far.
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.