Le contexte
CYNA est une plateforme self-service permettant à des entreprises d'acheter et de gérer des abonnements à des services de cybersécurité (SOC managé, EDR, XDR, réseau sécurisé, formation). J'ai développé l'API REST backend avec Symfony 7.4 et API Platform 4 ; un frontend React séparé consomme cette API.
Le projet est doublement intéressant pour mon profil : c'est à la fois une plateforme e-commerce complète et une démonstration de sécurité applicative appliquée — le sujet même que vend la plateforme.
La sécurité au cœur
C'est ici que le projet prend tout son sens pour un profil orienté cybersécurité :
- Authentification JWT stateless (LexikJWT), adaptée à un client SPA / mobile.
- Double authentification (2FA) : TOTP compatible Google Authenticator et code à 6 chiffres par email.
- Notification de connexion à chaque nouvelle session (IP, navigateur, OS détectés).
- Google SSO (OAuth2) avec création / réconciliation automatique du compte.
- Rate limiting en fenêtre glissante sur les endpoints sensibles (login, reset, contact, chatbot) pour limiter le brute-force et l'abus.
- Vérification d'email par token expirant à l'inscription.
Le tunnel e-commerce
Catalogue avec recherche à facettes, panier anonyme par token (fusionné après connexion), puis tunnel de commande complet : panier → adresse → PaymentIntent Stripe → confirmation. Le webhook Stripe est idempotent et active automatiquement les abonnements après paiement confirmé. Une facture PDF A4 (DomPDF) est générée automatiquement, avec TVA et téléchargement sécurisé.
L'intégration de l'IA
J'ai intégré un chatbot basé sur Google Gemini : conversations multi-tours en FR / EN, historique stocké en base, et surtout escalade automatique et manuelle vers un agent humain quand c'est nécessaire. L'IA assiste l'utilisateur sans jamais se substituer aux décisions sensibles.
La stack
Symfony 7.4, API Platform 4.3 (REST JSON-LD + OpenAPI/Swagger auto-généré), PostgreSQL 17, Doctrine ORM 3, LexikJWT, KnpU OAuth2, Stripe PHP SDK, Brevo (emails transactionnels), API Adresse BAN pour la géolocalisation, EasyAdmin pour le back-office, PHPUnit pour les tests.
Ce que ce projet démontre
Une maîtrise de la sécurité applicative de bout en bout (authentification forte, rate limiting, paiement sécurisé), de l'architecture API-First, et de l'intégration concrète d'IA dans un produit réel avec des garde-fous.