π Production-Ready Laravel Backend Boilerplate
Built with Laravel 12, PHP 8.2+, and modern development practices
Citadel is a production-ready Laravel backend boilerplate designed to accelerate your web application development. Built with Laravel 12 and modern PHP 8.2+, it provides a robust foundation with enterprise-grade features including OAuth2 authentication, role-based permissions, media management, and full-text search capabilities.
- β‘ Fast Setup - Get your API up and running in minutes
- ποΈ Production Ready - Built with scalability and security in mind
- π Enterprise Security - OAuth2, RBAC, and security best practices
- π§ͺ Test Driven - Comprehensive testing suite with Pest PHP
- π³ Docker Ready - Complete containerization for development and deployment
- π CI/CD Included - GitLab pipeline for automated testing and deployment
- π Well Documented - Extensive documentation and examples
Get Citadel running in 5 minutes! See QUICKSTART.md for detailed instructions.
Current version: {{ app_version() }}
- Semantic Versioning: Automated version management with CI/CD
- GitLab CI/CD: See SEMANTIC_VERSIONING.md
- GitHub Actions: See GITHUB_ACTIONS.md
- Version API:
GET /api/versionfor version information - Release Notes: See CHANGELOG.md for version history
- CI/CD Switcher: Use
scripts/ci-switch.shto switch between platforms
- PHP CS Fixer (Pint): Automatic code formatting
- PHPStan with Larastan: Static analysis for Laravel
- Pest: Modern PHP testing framework
- Pre-commit hooks: Automated quality checks
# Code formatting
composer run pint
# Static analysis
composer run analyse
# Run tests
composer run test
# All quality checks
composer run quality
# Development server with hot reload
composer run devgit clone <repository-url> citadel
cd citadel
docker-compose up -d
# Create your first super admin user
docker-compose exec app php artisan citadel:create-super-admin \
--email=admin@yourcompany.com \
--password=SecurePassword123! \
--name="Admin User"π Access: http://localhost:8000
git clone <repository-url> citadel
cd citadel
composer install && npm install
cp .env.example .env && php artisan key:generate
php artisan migrate && php artisan passport:install
# Create your first super admin user
php artisan citadel:create-super-admin \
--email=admin@yourcompany.com \
--password=SecurePassword123! \
--name="Admin User"
composer run devπ Access: http://localhost:8000
git clone <repository-url> citadel
cd citadel
./vendor/bin/sail up -d
# Create your first super admin user
./vendor/bin/sail artisan citadel:create-super-admin \
--email=admin@yourcompany.com \
--password=SecurePassword123! \
--name="Admin User"π Access: http://localhost
- Laravel Passport OAuth2 - Complete OAuth2 server implementation
- Role-Based Access Control - Spatie Laravel Permission with dot notation (
users.*,media.*) - Super Admin Management - Dedicated command for creating super admin users
- JWT Token Authentication - Secure API authentication
- Permission Helper Functions - Wildcard-aware permission checking
Citadel includes a powerful interactive command for creating super admin users:
# Interactive mode with confirmation prompts
php artisan citadel:create-super-admin
# Direct mode with parameters
php artisan citadel:create-super-admin \
--email=admin@example.com \
--password=SecurePassword123! \
--name="Super Admin"
# Docker environment
docker-compose exec app php artisan citadel:create-super-admin \
--email=admin@example.com \
--password=SecurePassword123! \
--name="Super Admin"Features:
- β Interactive UI - Beautiful table formatting with confirmation prompts
- β Validation - Email uniqueness and password strength validation
- β Role Assignment - Automatically assigns "Super Admin" role with all permissions
- β Success Feedback - Clear confirmation with user details and next steps
- β Docker Compatible - Works seamlessly in containerized environments
- Query Builder Integration - Spatie Laravel Query Builder for flexible API queries
- Advanced Filtering -
?filter[name]=john&sort=-created_at&include=roles - Field Selection -
?fields[users]=id,name,emailfor optimized responses - Auto-Generated Docs - Scramble for automatic OpenAPI documentation
- Consistent Responses - Standardized JSON API response format
- File Upload System - Spatie Laravel Medialibrary integration
- Image Processing - Automatic optimization and thumbnail generation
- Full-Text Search - Laravel Scout with multiple drivers
- Multiple Storage - Local, S3, and cloud storage support
- Pest PHP Testing - Modern testing framework with beautiful syntax
- Docker Development - One-command environment setup
- Code Quality Tools - Laravel Pint, PHPStan integration
- Hot Module Replacement - Fast development with Vite
- Redis Integration - High-performance caching and sessions
| Component | Technology | Purpose |
|---|---|---|
| Framework | Laravel 12 | Backend foundation |
| Authentication | Laravel Passport | OAuth2 server |
| Permissions | Spatie Permission | Role-based access control |
| Media | Spatie Medialibrary | File management |
| Search | Laravel Scout | Full-text search |
| API Queries | Spatie Query Builder | Flexible API filtering |
| Testing | Pest PHP | Modern testing framework |
| Frontend | Tailwind CSS + Vite | Modern UI development |
| Cache/Queue | Redis | High-performance data store |
| Database | MySQL/PostgreSQL/SQLite | Flexible database support |
app/Http/Controllers/Api/
βββ AuthController.php # Authentication endpoints
βββ UserController.php # User management with QueryBuilder
βββ MediaController.php # File upload and management
βββ SearchController.php # Full-text search functionality
βββ ApiDocumentationController.php # API documentation
app/Console/Commands/
βββ SuperAdminCreation.php # Interactive super admin creation command
βββ GetRoleList.php # Role management and statistics command
βββ README.md # Project overview and quick start
βββ QUICKSTART.md # 5-minute setup guide
βββ DOCKER.md # Docker development guide
βββ COMMANDS.md # Artisan commands reference
βββ DEPLOYMENT.md # Production deployment guide
βββ SEMANTIC_VERSIONING.md # Semantic versioning with GitLab CI/CD
βββ GITHUB_ACTIONS.md # GitHub Actions CI/CD setup
βββ CHANGELOG.md # Version history and changes
βββ CONTRIBUTING.md # Contribution guidelines
config/citadel.php- Centralized configurationapp/helpers.php- Helper functions with autoloading.env.citadel.example- Environment variable examples
Citadel supports both GitLab CI/CD and GitHub Actions with identical functionality:
- Configuration:
.gitlab-ci.yml - Semantic Release:
.releaserc.json - Documentation: SEMANTIC_VERSIONING.md
- Features: Automated testing, security scans, semantic versioning, multi-environment deployment
- Configuration:
.github/workflows/ci-cd.yml - Semantic Release:
.releaserc.github.json - Documentation: GITHUB_ACTIONS.md
- Features: Automated testing, CodeQL security, semantic versioning, environment protection
# Switch to GitLab CI/CD
./scripts/ci-switch.sh gitlab
# Switch to GitHub Actions
./scripts/ci-switch.sh github
# Check current status
./scripts/ci-switch.sh statusBoth platforms use conventional commits for automatic version management:
feat: add new feature # Minor version bump (1.0.0 β 1.1.0)
fix: resolve bug # Patch version bump (1.0.0 β 1.0.1)
feat!: breaking change # Major version bump (1.0.0 β 2.0.0)# Create a new super admin user (interactive)
php artisan citadel:create-super-admin
# Create super admin with parameters
php artisan citadel:create-super-admin --email=admin@example.com --password=SecurePass123! --name="Admin"
# View all available citadel commands
php artisan list citadel# Generate API documentation
php artisan scramble:generate
# Clear all caches
php artisan optimize:clear
# Run tests
./vendor/bin/pest
# Run code analysis
./vendor/bin/phpstan analyse- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open-sourced software licensed under the MIT license.
- Laravel Framework - The web artisans framework
- Spatie - Amazing Laravel packages
- Pest PHP - Modern testing framework
- Tailwind CSS - Utility-first CSS framework
- Laravel Framework - The web artisans framework
- Spatie - Amazing Laravel packages
- Pest PHP - Modern testing framework
- Tailwind CSS - Utility-first CSS framework