First birthday!
Posted by Denny at 22:07 on Thu, 01 Oct 2020
Today is the official first birthday of this project!
(I actually started a few days before October 1st last year, but I've decided that running 'rails new ShinyCMS' and then trying to fix all the rubocop errors in the Rails boilerplate don't count as 'starting' for purposes of having a nice neat birthday date) :)
I'm pretty pleased with how it's going so far. Although initially I wish I'd realised this anniversary was coming up a bit sooner, as I would have tried to knock a few more things off of the list of "features the Perl version has and the Ruby version doesn't (yet)". Instead I've been doing a bunch of refactoring lately, and actually I have zero regrets about that - one of the great things about this project is that I'm getting to refactor a lot, and it's made a significant difference to how happy I am with the system - both at a zoomed-in and zoomed-out level.
I'm going to start blogging about the project here going forward. I'm also going to try to find some time to go back through the PR history on GitHub, and back-date some posts about some of the more interesting or significant bits of code from the first year of the project.
For now - after twelve months of coding, refactoring, learning and improving - here's the current feature list:
- Provided by plugins:
- Pages and Page Sections
- Site admins can add as many pages and (nested) sections as they like
- Pages have defined content areas which can be edited by admins
- Page layout is controlled by Page Templates (can be provided by a theme or custom-built)
- Dynamically generated menus
- Inserts (re-usable content fragments that can be pulled into any template)
- News section
- Blog
- Mailing lists
- Newsletters
- Basic form handlers (e.g. contact form submitted -> email form data to site owner)
- Site search feature (supports multiple search back-ends; default is pg_search)
- Load only the plugins you want/need - smaller footprint, smaller attack surface
- Pages and Page Sections
- Provided by the main app:
- Comments (currently enabled on blog posts and news posts)
- Fully nested, so you can easily see who is replying to who at any level
- Email notifications of replies to your comments and posts
- Uses reCAPTCHA to block comments from bots
- Uses Akismet to flag potential spam comments for moderation
- Spam comment moderation sends 'spam'/'not spam' training data to Akismet
- Tags (currently enabled on blog posts and news posts, ready to add to any content type)
- Likes or up/down votes on posts, comments, etc
- User accounts and administration
- ACL-based authorisation system for admins (powered by Pundit)
- Uses reCAPTCHA to block registration by bots
- Comments (currently enabled on blog posts and news posts)
- Support for themes on the hosted site
- Light-lift theme system - you only need to override the default templates that you want to change
- Two themes currently included:
- Halcyonic (one, two, and three column layouts; suitable for content-rich sites)
- Coming Soon (single page with mailing list sign-up form and slideshow background)
- Web interface for site settings
- Change most site settings from within the CMS admin area
- Easily enable or disable CMS features (e.g. new user registrations)
- Decide which settings to allow site users to override (e.g. theme)
- All emails use MJML templates, producing reliably cross-platform HTML emails
- Built-in web stats (powered by Ahoy) and email stats (powered by Ahoy::Email)
- Charts and dashboards for viewing stats (powered by Blazer)
Like I say; I'm pretty pleased with it so far. I didn't quite catch up with the Perl version's feature list yet, but I am getting kind of close :)
Tags: birthday features progress one year