Tous les projets

Février — Mars 2026

Comparator — Outil de Comparaison Multi-Produits

Outil personnel pour comparer des produits complexes (voitures, téléphones, électroménager) côte à côte, sans dépendre de sites tiers incomplets ou orientés publicité.

Symfony 7 PHP 8.2 Tailwind CSS Docker MySQL Twig AJAX

// niveau de départ

  • Symfony 5/6 bien maîtrisé, mais pas Symfony 7 ni AssetMapper
  • Tailwind CSS via CDN — jamais intégré proprement dans un projet Symfony
  • Docker basique — jamais configuré un stack PHP complet multi-service
  • AJAX en JavaScript pur, pas encore l'approche Symfony-native (Stimulus)
Aperçu — Comparator — Outil de Comparaison Multi-Produits

Contexte

J’avais besoin d’un outil pour comparer des voitures lors d’un achat — les sites comparateurs existants sont envahis de publicités, orientés affiliation, et ne laissent pas filtrer selon mes propres critères. L’idée était de construire quelque chose de propre, maîtrisé de A à Z.

Le projet a rapidement servi de terrain d’expérimentation pour Symfony 7 et ses nouvelles features (AssetMapper pour les assets front sans Webpack, Stimulus pour l’interactivité légère).

Architecture

L’application est structurée autour du pattern MVC de Symfony, avec une séparation claire entre :

  • Entities / Doctrine pour la modélisation des produits et critères de comparaison
  • Services pour la logique métier (comparaison, scoring)
  • Controllers fins qui délèguent au maximum
  • Twig pour les templates, augmenté de Tailwind CSS via CDN (dev) / AssetMapper (prod)

Fonctionnalités clés

La recherche en temps réel utilise des requêtes AJAX côté Symfony qui retournent du HTML partiel (pas du JSON) — une approche Symfony-native qui évite de maintenir une couche API séparée.

Le mode sombre est géré entièrement côté CSS avec la classe .dark sur le <html>, persistée dans localStorage. Zéro dépendance JavaScript tierce.

L’authentification repose sur le Security Bundle de Symfony avec un User entity, un formulaire de login custom et des Voters pour contrôler l’accès aux pages de gestion.

Infrastructure

Stack Docker multi-service : PHP, Apache et MySQL. Un seul docker compose up — aucune installation locale requise en dehors de Docker.

// points forts

  • Filtrage en temps réel via AJAX sans rechargement de page
  • Comparaison côte à côte jusqu'à 3 produits
  • Mode sombre avec persistance (localStorage)
  • Authentification sécurisée avec Symfony Security Bundle
  • Containerisation Docker complète (Dockerfile + docker-compose)
  • Design responsive mobile-first avec Tailwind CSS

// ce que j'ai appris

  • Symfony 7.3 et ses dernières features (AssetMapper, Stimulus)
  • Architecture propre avec Services, Repositories et Voters
  • Requêtes Doctrine optimisées avec filtres composés
  • Intégration de Tailwind CSS 3.4 dans un projet Symfony sans Node.js