Février — Mars 2023
App Symfony — EasyAdmin + Docker + Charts
Projet d'apprentissage centré sur 3 problématiques concrètes : générer rapidement un back-office pro, visualiser des données avec des graphiques, et containeriser proprement une app Symfony.
// niveau de départ
- Symfony bien connu — jamais utilisé EasyAdmin ni Symfony UX
- Docker : quelques notions lues, jamais configuré en production
- PHPUnit : notion théorique, zéro expérience en tests automatisés
- Chart.js : jamais intégré dans un backend PHP
Contexte
Ce projet était motivé par une question pratique : combien de temps faut-il pour avoir un back-office fonctionnel avec Symfony ? La réponse avec EasyAdmin : quelques heures.
J’ai aussi profité de ce projet pour consolider mes bases sur Docker et les tests automatisés — deux compétences que je voulais avoir en main avant d’aller en production.
EasyAdmin 4 — un back-office en quelques lignes
EasyAdmin génère automatiquement des pages CRUD à partir des entités Doctrine. En ajoutant quelques annotations ou une classe de configuration, on obtient :
- Liste paginée et triable des entités
- Formulaire de création/édition avec validation
- Filtres avancés
- Actions custom (export, duplication…)
Pour personnaliser, il suffit de surcharger les méthodes du CrudController.
Tests
Les tests couvrent les couches service et controller :
// Test fonctionnel : vérifie qu'un utilisateur non-auth est redirigé
public function testAdminRequiresAuth(): void {
$this->client->request('GET', '/admin');
$this->assertResponseRedirects('/login');
}
Infrastructure Docker
Stack Docker multi-service : PHP, Apache et MySQL. Même docker-compose.yml en dev et en prod — ce qui élimine les “ça marche sur ma machine”.
// points forts
- Interface d'administration auto-générée avec EasyAdmin 4
- Graphiques interactifs via Symfony UX + Chart.js
- Docker : Dockerfile + docker-compose (PHP, Apache, MySQL)
- Tests unitaires et fonctionnels avec PHPUnit
- Déploiement en production sur VPS
// ce que j'ai appris
- EasyAdmin 4 : CRUD auto-généré, personnalisation des champs, filtres, actions
- Symfony UX et le bundle Chart.js pour des graphiques côté serveur
- Docker multi-service en développement ET en production (même config)
- PHPUnit avec Symfony : tester les controllers, les services, les entités