Conventio
Dématérialisation des conventions de stage
Le contexte
Chaque année, les conventions de stage BTS suivent un long parcours papier : impression, signatures manuelles de l'étudiant, du professeur référent, de la direction et de l'entreprise, puis numérisation. Un processus lent, coûteux et sujet aux pertes.
Conventio remplace ce workflow par une application web qui centralise la collecte des informations, les validations successives et la signature électronique — tout en gardant un PDF final fidèle au modèle officiel.
Fonctionnement
Le cœur du projet est une machine à états pilotée par l'entité PreConventionRequest : sent → submitted → validated_student → validated_teacher → validated_admin.
Trois rôles interviennent :
- L'étudiant saisit les informations de stage et déclenche la demande
- Le professeur référent vérifie les informations pédagogiques et valide
- La direction (DDF) valide en dernier lieu et déclenche la génération du PDF + la procédure de signature
L'entreprise d'accueil, elle, n'a aucun compte à créer : elle reçoit un lien public à token UUID (expiration 7 jours) qui lui permet de consulter et signer la convention.
Intégrations clés
Gotenberg + PhpWord
Génération du PDF final à partir d'un template DOCX. Les placeholders ${...} sont remplis par TemplateProcessor avant conversion.
Yousign API v3
Signature électronique des 3 parties. Les ancres {{s1|...}} placées dans le DOCX sont détectées via parse_anchors=true.
2FA Google Authenticator
Authentification à deux facteurs obligatoire pour les comptes internes (étudiant, prof, direction) via scheb/2fa-bundle.
Stack technique
- Framework : Symfony 7.4 (PHP 8.2+)
- ORM : Doctrine 3 (migrations + repositories)
- Frontend : Twig + Stimulus + Turbo via AssetMapper (pas de build JS)
- Conteneurisation : Docker Compose (MySQL, Gotenberg, Mailpit)
- Sécurité : scheb/2fa-bundle, validation stricte des tokens UUID
- Tests : PHPUnit sur la logique métier (transitions d'états)
Ce que j'en ai retiré
Projet formateur sur toute la chaîne : modélisation d'un workflow métier réel, intégration de services tiers (Gotenberg, Yousign), sécurité (2FA, tokens à expiration) et mise en place d'un environnement Docker reproductible.
Le plus gros apprentissage : penser le parcours utilisateur bout-en-bout, y compris pour les acteurs externes (l'entreprise n'est pas un utilisateur du système mais doit quand même pouvoir signer).