Un starter kit Symfony moderne prêt à l'emploi, pensé pour démarrer rapidement des projets web avec une base saine : Docker, authentification, sécurité, Symfony UX.
Ce dépôt est volontairement générique, propre et réutilisable.
Fournir une installation fraîche (fresh install) de Symfony avec :
- ✅ Un environnement Docker prêt à l'emploi
- ✅ Une authentification complète :
- Login / Logout
- Reset password (mot de passe oublié)
- ✅ Une entité User de base
- ✅ Une configuration Security claire et extensible
- ✅ Symfony UX installé et prêt
➡️ L'idée : cloner, lancer, développer. Sans perdre de temps.
| Composant | Description |
|---|---|
| PHP | Via Docker |
| Symfony | Version LTS ou stable |
| Docker | Conteneurisation complète |
| Symfony Security | Authentification & autorisation |
| Form Login | Authenticator pré-configuré |
| Doctrine ORM | Gestion de base de données |
| Symfony UX | Composants UI modernes |
| Twig | Moteur de templates |
Avant de commencer, assurez-vous d'avoir :
- ✅ Docker
- ✅ Docker Compose
- ✅ Git
Note : Aucune installation PHP locale n'est requise 🐳
git clone https://github.com/votre-username/symfony-docker-auth-starter.git
cd symfony-docker-auth-starterCopiez le fichier .env.example si nécessaire en .env et l'adapter selon votre environnement :
cp .env .env.localAdaptez les variables selon vos besoins :
DATABASE_URL="mysql://app:!ChangeMe!@database:5432/app?serverVersion=16&charset=utf8"
APP_SECRET=votre_secret_unique
MAILER_DSN=null://nulldocker compose up -d --buildLes conteneurs suivants seront démarrés :
- 🐘 PHP-FPM (PHP 8.x)
- 🌐 Nginx (serveur web)
- 🗄️ Mysql (base de données)
docker compose exec php composer install
# or
make composer-install# Créer la base de données
docker compose exec php php bin/console doctrine:database:create
# or
make db-create
# Appliquer les migrations
docker compose exec php php bin/console doctrine:migrations:migrate
# or
make db-migrate🎉 Votre application est maintenant accessible sur : https://localhost
Le projet embarque une authentification par formulaire prête à l'emploi :
- 🔑 Login (
/login) - 🚪 Logout (
/logout) - 🔄 Reset password (mot de passe oublié)
- 🔒 Gestion de session sécurisée
- 🛡️ Protection CSRF
L'entité User inclut :
- email (unique, identifiant de connexion)
- password (hashé avec l'algorithme auto)
- roles (ROLE_USER par défaut)Cette base est volontairement minimale pour rester flexible et adaptable à vos besoins.
Le projet inclut une commande personnalisée pour créer facilement des utilisateurs.
docker compose exec php php bin/console security:hash-passwordCopiez le hash généré (il commence par $2y$).
# Créer un utilisateur standard
docker compose exec php php bin/console app:create-user email@example.com "VOTRE_HASH_ICI"
# Créer un utilisateur avec le rôle ADMIN
docker compose exec php php bin/console app:create-user email@example.com "VOTRE_HASH_ICI" --adminVia PHPMyAdmin (http://localhost:8080) :
INSERT INTO user (email, roles, password)
VALUES ('user@example.com', '["ROLE_USER"]', 'VOTRE_HASH_ICI');- 📝 Configuration centralisée dans
config/packages/security.yaml - 🔐 Mots de passe hashés automatiquement
- 🎭 Accès protégé par rôles
- 🛡️ CSRF activé sur les formulaires
- 🔒 Sessions sécurisées
Symfony UX est installé et prêt à l'emploi :
- ⚡ Stimulus : Contrôleurs JavaScript légers
- 🚀 Turbo : Navigation ultra-rapide
- 📦 AssetMapper ou Webpack Encore : Gestion des assets moderne
assets/
├── app.js # Point d'entrée JavaScript
├── styles/
│ └── app.css # Styles globaux
└── controllers/ # Contrôleurs Stimulus
└── hello_controller.js
Idéal pour des interfaces réactives sans basculer immédiatement sur un front full SPA.
.
├── config/
│ ├── packages/
│ │ └── security.yaml # Configuration sécurité
│ └── routes.yaml
├── src/
│ ├── Controller/
│ │ └── SecurityController.php # Login/Logout
│ ├── Entity/
│ │ └── User.php # Entité utilisateur
│ ├── Repository/
│ │ └── UserRepository.php
│ └── Security/
│ └── AppAuthenticator.php # Authentificateur
├── templates/
│ ├── base.html.twig
│ └── security/
│ └── login.html.twig # Page de connexion
├── docker-compose.yml # Configuration Docker
├── Dockerfile
└── .env # Variables d'environnement
Ce projet inclut un Makefile complet pour simplifier toutes les opérations courantes. Plus besoin de taper de longues commandes Docker !
Voir fichier makefile à la racine du projet
Selon les besoins de votre projet, vous pouvez facilement ajouter :
docker compose exec php composer require --dev phpunit/phpunit
docker compose exec php php bin/phpunit# PHPStan
docker compose exec php composer require --dev phpstan/phpstan
# PHP CS Fixer
docker compose exec php composer require --dev friendsofphp/php-cs-fixer# Formulaire d'inscription
docker compose exec php php bin/console make:registration-form
# Reset password
docker compose exec php php bin/console make:reset-password# Vérifier les logs
docker compose logs
# Reconstruire complètement
docker compose down -v
docker compose up -d --buildVérifiez que :
- Le conteneur Mysql est bien démarré :
docker compose ps - La variable
DATABASE_URLdans.env.localest correcte - Le port 8080 n'est pas déjà utilisé sur votre machine
docker compose exec php chown -R www-data:www-data var/
docker compose exec php chmod -R 775 var/Vérifiez que :
- Les conteneurs tournent :
docker compose ps - Le port 8080 est libre
- Nginx est bien configuré
- 📧 Email : contact@nicolas-reitin.fr