Développement d'un micro-service de génération de PDF couplé à une application Symfony 7. La plateforme propose 8 outils de conversion, une gestion des abonnements (FREE, BASIC, PREMIUM) et un système d'envoi de PDF par email.
Dans le cadre du cours WR602D (Développement Web et Dispositif Interactif — Semestre 6), j'ai développé une application complète permettant de générer des PDFs à partir de différentes sources : URL, fichiers HTML, texte, images ou documents Office. Le projet devait s'appuyer sur un micro-service externe (Gotenberg) appelé depuis une application Symfony.
Ce projet fait suite au semestre 5 où j'avais travaillé sur des notions comme les fixtures, les services Symfony, les tests de qualité de code ou encore la mise en place de GitHub Actions. Ici, j'ai pu réinvestir et approfondir toutes ces compétences dans un projet plus complet.
J'ai structuré l'application autour d'un service Symfony (PdfGeneratorService) qui communique avec Gotenberg via des requêtes HTTP. Les utilisateurs se connectent, choisissent un outil de conversion selon leur plan d'abonnement, et reçoivent leur PDF directement sur la plateforme ou par email.
URL, HTML, texte, formulaire, image, Office, fusion et séparation de PDF
3 niveaux : FREE (2/jour), BASIC (20/jour, 9,99€), PREMIUM (200/jour, 29,99€)
Livraison du PDF en pièce jointe directement dans la boîte mail de l'utilisateur
Accès à l'historique et téléchargement des PDFs pour les plans BASIC et PREMIUM
Inscription, connexion, réinitialisation de mot de passe via le Security Bundle Symfony
Gestion des abonnements en ligne avec webhooks Stripe pour la mise à jour automatique
Configuration du Docker Compose avec Symfony, MariaDB, phpMyAdmin, MailDev et Gotenberg. Vérification de chaque service avant de commencer le développement.
Création des entités Doctrine : User, Plan, UserContact, Generation et Tool. Mise en place des fixtures pour pré-remplir la base de données avec les 3 plans d'abonnement.
Implémentation du système de login, inscription et réinitialisation de mot de passe via le Security Bundle de Symfony.
Développement du PdfGeneratorService qui envoie des requêtes HTTP à Gotenberg pour convertir URLs, HTML, images et fichiers Office en PDF.
Mise en place des 3 plans avec leurs limites respectives, intégration de Stripe pour les paiements et webhooks pour la mise à jour automatique des abonnements.
Configuration de Brevo (SMTP) pour l'envoi des PDFs par email en production, MailDev en local. Déploiement sur VPS et mise en place de GitHub Actions pour la CI/CD.
L'URL de connexion Brevo contenait un @ dans le login qui cassait le parsing du DSN. Solution : encoder le @ en %40 directement dans la variable d'environnement.
Le projet Symfony se trouvait dans un sous-dossier www/ du dépôt Git, ce qui a nécessité d'adapter les volumes Docker et la configuration de GitHub Actions.
La communication avec Gotenberg demandait de bien formater les requêtes multipart selon le type de conversion. J'ai d'abord testé avec Postman avant d'intégrer les appels dans le service Symfony.
Gérer les événements asynchrones de Stripe (paiement réussi, abonnement annulé) a nécessité la mise en place d'un contrôleur dédié et la vérification de la signature des requêtes entrantes.
Outils de conversion PDF disponibles
Plans d'abonnement avec gestion des droits
Dockerisé — environnement reproductible
Pipeline GitHub Actions opérationnel
Ce projet m'a permis de consolider mes compétences de semestre 5 et d'aller plus loin dans l'architecture d'une vraie application web :
main, develop et feature/*