Tous les projets

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.

Symfony PHP Docker EasyAdmin Chart.js PHPUnit Twig

// 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