← Tous les projets // étude de cas · 2026

Mon Avis Pro

Symfony PHP PostgreSQL Docker Git PHPUnit API REST PHPStan
Capture de Mon Avis Pro

01Le besoin

Un commerçant reçoit des avis Google chaque semaine, mais découvre souvent un avis négatif des semaines après, sans y avoir répondu. Les outils existants coûtent 50 à 300 € par mois, hors budget pour un restaurateur ou un artisan.

MonAvisPro est un tableau de bord simple, en français, pensé pour un gérant qui consacre 5 minutes par semaine à sa réputation : il voit ses avis, est alerté des mauvais, et répond en un clic.

02Mes choix techniques

  • Symfony 7 / PHP 8.4 et PostgreSQL, déployé sur Railway avec FrankenPHP.
  • Connexion OAuth 2.0 à Google Business Profile : synchronisation de tous les avis d'une fiche et publication des réponses directement sur Google.
  • Symfony Scheduler plutôt qu'un cron système : synchronisation toutes les 6 heures, alerte e-mail dès qu'un avis de 2 étoiles ou moins arrive, bilan mensuel envoyé au commerçant. L'orchestration reste dans le code, versionnée et testable.
  • OpenAI (GPT-4o-mini) pour proposer les réponses, réglées par établissement (vouvoiement, ton, signature, consignes). L'IA rédige, le commerçant relit : rien n'est publié sans lui.
  • Une boîte « À traiter » qui regroupe tous les avis sans réponse, les négatifs en premier.
  • API REST avec authentification JWT, chaque accès vérifié par un Voter (un commerçant ne voit que ses établissements).

03La difficulté

La sécurité. Une application qui détient les accès Google de commerçants ne peut pas se permettre d'approximation, et en relisant mon propre code j'ai trouvé plusieurs failles que j'ai corrigées d'un bloc.

  • Les clés JWT étaient versionnées dans le dépôt, protégées par une phrase connue. Je les ai retirées : elles sont maintenant générées au démarrage du conteneur.
  • Les jetons d'accès Google étaient stockés en clair. Je les ai chiffrés en base (libsodium), avec une migration douce des jetons existants pour ne déconnecter aucun client.
  • Le contenu des avis vient de Google, donc de n'importe qui : il est désormais échappé systématiquement à l'affichage, contre l'injection de code.
  • Limitation de débit sur la connexion, l'inscription et les appels à l'IA, en-têtes de sécurité (CSP, HSTS…) sur toutes les réponses, et un compte de démonstration en lecture seule.

04Le résultat

  • En ligne, avec un compte de démonstration ouvert aux visiteurs.
  • PHPStan niveau 7, tests PHPUnit sur une vraie base PostgreSQL, CI GitHub Actions.
  • Le moteur d'alertes et de bilans mensuels sert aussi à mon offre « Avis Google clé en main ».

05En images

Projet suivant

Portfolio développeur Symfony →

Poste, mission ou site à créer : parlons-en.