A modern, lightweight Content Management System (CMS) and blogging platform built with Ruby on Rails 8.1. miniCMS provides a clean, intuitive interface for creating, managing, and sharing content with ease.
- π Rich Text Editor - Create beautiful posts with Action Text (Trix editor)
- π·οΈ SEO-Friendly URLs - Automatic slug generation with FriendlyId
- πΈ Image Uploads - Active Storage integration for avatars and attachments
- π Full-Text Search - Search across posts, users, and comments
- π¬ Comments & Replies - Nested comment system with threading
- β Favorites - Bookmark and organize favorite posts
- π Reactions - Express feelings with emoji reactions
- π₯ Follow System - Follow users and get notified of their new posts
- π Real-time Notifications - Stay updated with activity notifications
- π Authentication - Secure sign up/sign in with Devise
- π User Roles - Admin, Moderator, and Member roles
- π€ User Profiles - Customizable profiles with avatars and bios
- π Multilingual - English and Arabic support (i18n)
- π Dashboard - Overview of posts, users, and comments
- π οΈ Content Moderation - Manage posts, comments, and users
- π Statistics - Track platform growth and engagement
| Component | Technology |
|---|---|
| Backend | Ruby 3.4+, Rails 8.1 |
| Database | SQLite3 (development), PostgreSQL/MySQL (production ready) |
| Frontend | Hotwire (Turbo + Stimulus), Bootstrap 5 |
| Authentication | Devise |
| Rich Text | Action Text (Trix) |
| File Uploads | Active Storage |
| Deployment | Docker, Kamal |
- Ruby 3.4 or higher
- Rails 8.1 or higher
- SQLite3 (or PostgreSQL/MySQL for production)
- Node.js (for asset compilation)
- Yarn or npm
- ImageMagick (for image processing)
git clone https://github.com/siddigsalahaldin/miniCMS.git
cd miniCMS# Install Ruby gems
bundle install
# Install JavaScript dependencies
bin/importmap install# Create and migrate the database
bin/rails db:create
bin/rails db:migrate
# (Optional) Load sample data
bin/rails db:seedbin/rails serverVisit http://localhost:3000 in your browser.
Create a .env file in the root directory for environment-specific configuration:
# Optional: Configure application settings
RAILS_ENV=development
RAILS_MAX_THREADS=5For file uploads, configure Active Storage in config/storage.yml:
local:
service: Disk
root: <%= Rails.root.join("storage") %>Configure Action Mailer in config/environments/development.rb:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }- Sign in to your account
- Click "New Post" in the navigation
- Enter a title and write content using the rich text editor
- Publish immediately or save as draft
- Click the bell icon to view recent notifications
- Notifications are automatically marked as read when viewed
- Receive notifications for:
- Comments on your posts
- Replies to your comments
- New followers
- New posts from followed users
Admin users can access the dashboard at /admin/dashboard:
- View platform statistics
- Manage all posts, users, and comments
- Assign moderator/admin roles
miniCMS supports multiple languages:
| Language | Code | Status |
|---|---|---|
| English | en |
β Complete |
| Arabic | ar |
β Complete |
Use the language switcher in the header to toggle between English and Arabic. The application automatically adjusts:
- Text direction (LTR/RTL)
- Date/time formatting
- Number formatting
- Create a new locale file in
config/locales/(e.g.,fr.yml) - Add translations following the existing structure
- Update
config/application.rbto include the new locale
config.i18n.available_locales = [:en, :ar, :fr]# Run the test suite
bin/rails test
# Run tests with coverage
bin/rails test:coverage
# Run system tests
bin/rails test:systemminiCMS is configured for Docker deployment:
# Build the Docker image
docker build -t minicms .
# Run the container
docker run -d -p 3000:3000 -e RAILS_MASTER_KEY=<your-key> minicmsFor production deployment with Kamal:
# Configure deployment in config/deploy.yml
kamal setup
# Deploy
kamal deploy- Use PostgreSQL or MySQL for production database
- Configure a production-ready cache store (Redis)
- Set up a CDN for Active Storage assets
- Enable SSL/TLS for secure connections
- Configure environment variables for secrets
miniCMS/
βββ app/
β βββ controllers/ # Request handlers
β βββ models/ # Data models
β βββ views/ # Templates
β βββ helpers/ # View helpers
β βββ assets/ # CSS, JS, images
β βββ javascript/ # Stimulus controllers
βββ config/
β βββ locales/ # i18n translations
β βββ routes.rb # URL routing
β βββ database.yml # Database config
βββ db/
β βββ migrate/ # Database migrations
β βββ schema.rb # Database schema
βββ lib/ # Custom libraries
βββ public/ # Static files
βββ test/ # Test files
βββ Gemfile # Ruby dependencies
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project uses RuboCop for Ruby linting:
bundle exec rubocopThis project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2026 Siddig Salahaldin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Ruby on Rails - The web framework
- Hotwire - Modern front-end development
- Devise - Authentication solution
- Bootstrap - UI framework
- Trix - Rich text editor
This application was built using Qwen Code, an AI-powered development assistant by Alibaba Group.
- Issues: Open an issue on GitHub
- Discussions: Join the conversation on GitHub Discussions
Built with β€οΈ using Ruby on Rails






