A clean, modular, and extensible Laravel-based content management system designed for developers and content creators.
- Modern Stack: Laravel 12 + Blade + Tailwind CSS + Alpine.js
- Authentication: Complete auth system with Laravel Breeze
- Admin Dashboard: Clean, responsive admin interface
- Content Management: Pages, media, and navigation management
- User Roles: Super Admin, Admin, and Editor roles with policies
- Developer Friendly: Built with extensibility and modularity in mind
- Quality Assurance: Pest testing framework, PHPStan, and Laravel Pint
- PHP 8.2 or higher
- Composer
- Node.js & npm
- MySQL 8.0+ (recommended) or SQLite
-
Clone the repository
git clone <repository-url> cd untitled-cms
-
Install dependencies
composer install npm install
-
Environment setup
cp .env.example .env php artisan key:generate
-
Database configuration
Update your
.envfile with your database credentials:For MySQL (recommended):
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=untitled_cms DB_USERNAME=your_username DB_PASSWORD=your_password
For SQLite (alternative):
DB_CONNECTION=sqlite DB_DATABASE=/absolute/path/to/database.sqlite
-
Database setup
php artisan migrate php artisan db:seed --class=UserRoleSeeder
-
Build assets
npm run dev
-
Start development server
php artisan serve
Visit http://localhost:8000 to see your CMS in action!
After running the seeder, you can log in with:
- Email: admin@example.com
- Password: password
- Role: Super Admin
Remember to change these credentials in production!
app/
βββ Http/ # Controllers, requests, middleware
βββ View/ # View components
resources/
βββ views/
β βββ admin/ # Admin interface views
β βββ auth/ # Authentication views
β βββ layouts/ # Base layouts
βββ css/ # Stylesheets
βββ js/ # JavaScript
routes/
βββ web.php # Public routes
βββ admin.php # Admin routes
βββ auth.php # Authentication routes
- Backend: Laravel 12.x with PHP 8.2+
- Frontend: Blade templating with Tailwind CSS and Alpine.js
- WYSIWYG Editor: CKEditor 4 for rich content editing
- Database: MySQL/SQLite with Eloquent ORM
- Authentication: Laravel Breeze
- Testing: Pest with Laravel plugins
- Code Quality: Laravel Pint (PSR-12) and PHPStan (Level 5)
# Run all tests
./vendor/bin/pest
# Run specific test file
./vendor/bin/pest tests/Feature/Auth/AuthenticationTest.php
# Run with coverage
./vendor/bin/pest --coverage# Format code
./vendor/bin/pint
# Check formatting without fixing
./vendor/bin/pint --test
# Static analysis
./vendor/bin/phpstan analyse# Development (watch mode)
npm run dev
# Production build
npm run buildThe CMS includes CKEditor 4 for rich text editing with the following features:
- Rich Text Formatting: Bold, italic, underline, colors, fonts
- Content Blocks: Paragraphs, headings (H1-H6), lists, quotes
- Media Support: Image insertion, links, tables
- Code Support: Source code view and special characters
- SEO Friendly: Clean HTML output with semantic markup
The editor is automatically initialized on page creation and editing forms. No additional configuration required.
- Content Types: Rich text content with CKEditor 4 integration
- SEO Optimization: Meta titles, descriptions, and keywords
- Publishing Workflow: Draft/Published status with scheduled publishing
- URL Management: Automatic slug generation from titles
- Content Organization: Hierarchical page structure
- File Upload: Drag-and-drop file uploads with validation
- Media Types: Support for images, documents, videos, and audio
- Image Handling: Automatic dimension detection and thumbnails
- File Management: View, edit metadata, copy URLs, and delete files
- Search & Filter: Filter by file type and search by filename/description
- Super Admin: Full system access and user management
- Admin: Content management and publishing permissions
- Editor: Content creation with limited editing permissions
- Policy-Based: Granular permissions using Laravel policies
- Project Plan: Complete development roadmap and technical specifications
- Initial Requirements: Original project brief and requirements
- CSRF protection enabled
- XSS prevention with Blade escaping
- SQL injection protection via Eloquent ORM
- Password hashing with bcrypt
- Rate limiting on authentication routes
- Role-based access control with policies
- File upload validation and secure storage
- 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
- Follow PSR-12 coding standards
- Write tests for new features
- Update documentation as needed
- Ensure all quality checks pass
- Authentication system with Laravel Breeze
- Admin dashboard with statistics
- Basic project structure and architecture
- Site settings management
- Page management with CKEditor 4 integration
- Navigation builder with drag-and-drop ordering
- Media upload and management system
- User roles and permissions (Super Admin, Admin, Editor)
- SEO meta fields and URL management
- MySQL integration and database optimization
- Content blocks system foundation
- Draft/Published workflow
- Form validation and security policies
Status: Production ready! All core CMS features implemented and tested.
This project is open-sourced software licensed under the MIT license.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: See PROJECT_PLAN.md for detailed technical documentation