semhoun / slim-skeleton-mvc
Simple Slim Framework 4 skeleton with Twig, Monolog, Doctrine in Sqlite.
Installs: 1 260
Dependents: 0
Suggesters: 0
Security: 0
Stars: 84
Watchers: 6
Forks: 15
Open Issues: 0
Type:project
pkg:composer/semhoun/slim-skeleton-mvc
Requires
- php: ^8.0
- ext-json: *
- ext-sqlite3: *
- akrabat/proxy-detection-middleware: ^1.0
- doctrine/dbal: ^4
- doctrine/migrations: ^3
- doctrine/orm: ^3
- monolog/monolog: ^3.6
- php-di/slim-bridge: ^3.4
- slim/psr7: ^1.7
- slim/slim: ^4.14
- slim/twig-view: ^3.4
- symfony/cache: ^7
- symfony/console: ^6.0
Requires (Dev)
- nunomaduro/phpinsights: ^2.11
- rector/rector: ^1.1
- semhoun/slim-tracy: ^1.0
README
A modern web application skeleton based on Slim 4, using the MVC architecture. This project is ideal for quickly starting the development of an API or a web application with a robust stack.
๐ Features
- Framework: Slim 4.15 (PSR-7, PSR-15, PSR-17)
- PHP Version: 8.4+ required
- Dependency Injection Container: PHP-DI 7.0 with autowiring
- ORM: Doctrine ORM 3.5 with DBAL 4.4
- Database: SQLite by default (supports MySQL, PostgreSQL via configuration)
- Template Engine: Twig 3.4
- API Support: RESTful API skeleton with JSON rendering
- Logging: Monolog 3.9 with multiple handlers
- Console: Symfony Console 6.4 with custom commands
- Code Quality: PHP Insights 2.13 & Rector 2.2
- Debugging: Tracy integrated via slim-tracy
- Sessions: Odan Session 6.4 with secure storage
- Migrations: Doctrine Migrations 3.9
- Environment: vlucas/phpdotenv 5.6 for configuration (supports
.envfiles, system environment variables, and mandatory variables usingenv_required(['VAR1', 'VAR2']) - Proxy Support: Built-in proxy detection middleware
๐ ๏ธ Requirements
- PHP 8.4 or higher
- Composer 2.0 or higher
- SQLite extension (or MySQL/PostgreSQL for production)
- Required PHP extensions: json, pdo, pdo_sqlite
๐ ๏ธ Installation
1. Create the project
Use Composer to install the project:
composer create-project semhoun/slim-skeleton-mvc [your-app]
2. Configuration
- Copy the
.env.examplefile to.env:
cp .env.example .env
-
By default, the application uses a SQLite database located in
var/database.sqlite. For production, configure your database and other settings in the.envfile or via environment variables. -
Initialize the database:
./console migrations:migrate
- (Optional) Generate Doctrine proxies:
./console orm:generate-proxies
3. Run the application
You can use the PHP built-in development server:
composer start
Or use the console command:
./console serve
The application will be accessible at http://localhost:8080.
4. Available Console Commands
# Clear application cache ./console cache:clear # Initialize cache ./console cache:init # Generate Doctrine proxies ./console orm:generate-proxies # Run development server ./console serve # List all available commands ./console list
๐งช Development Tools
Run unit tests:
composer test
Check code quality with PHP Insights:
composer insights-check
Apply automatic Rector fixes:
composer rector-fix
Fix code style issues:
composer insights-fix
Run pre-commit checks (code style + rector + dos2unix):
composer pre-commit
A compose.yml file is provided to facilitate deployment. Here is a configuration example:
services: slim: image: semhoun/webserver ports: - "8080:80" volumes: - .:/www environment: - APP_ENV=dev - DEBUG_MODE=true
To launch the environment with Docker:
docker compose up -d
๐ Notes
- Ensure that the
varfolder has write permissions (for cache, logs, database) - Default credentials: admin / admin (change in production!)
- The project includes an error rendering system (HTML/JSON) based on the
Acceptheader - API routes are prefixed with
/api(configurable inconfig/settings/_base_.php)
๐ Documentation
๐ License
This project is licensed under the MIT License. See the LICENSE file for more details.
๐ Changelog
See the CHANGELOG.md file for version history and upcoming changes.