Expert en Architecture et Développement Logiciel · RNCP 38822 · Bloc 3 — Compétences BC03 ·
PROJET 3
Projet applicatif — Mise en production · Sécurité

NexPay — Modernisation d'une
Plateforme Fintech

Vous intervenez en tant que prestataires externes mandatés par NexPay, une PME Fintech en pleine transformation digitale. Votre mission : concevoir, développer et mettre en production une plateforme sécurisée, conforme OWASP, prête pour les partenaires et les investisseurs.

25 pts
Barème total
1 semaine
Durée intensive
3 phases
Backend · Frontend · Sécurité
Accueil/ RNCP 38822 — Projets/ Projet 3 — NexPay · BC03

Bloc 3 — Piloter la mise en production et l'évolution des solutions

RNCP 38822 · Expert en Architecture et Développement Logiciel · Niveau 7

Compétences visées

Ce bloc évalue la capacité à déployer une solution logicielle en production dans des conditions réelles : configuration HTTPS/SSL, sécurisation conforme OWASP, mise en place de mécanismes de surveillance, gestion de la dette technique et pilotage de l'évolution d'un système existant.

La maintenance corrective et évolutive, le DevOps (CI/CD, pipelines), l'audit de sécurité inter-équipes et la conformité aux standards de cybersécurité sont au cœur de l'évaluation.

Ce que ce projet évalue

Le projet NexPay couvre l'ensemble du spectre BC03 : la refonte d'un SI legacy sans tests ni sécurité vers une architecture moderne (Symfony 6 + Vue.js 3 + Node.js), la mise en production sécurisée (HTTPS, OWASP Top 10, rate limiting, headers), et un audit inter-équipes simulant un vrai pentest.

Le contexte Fintech — avec des investisseurs, une levée de fonds et des partenaires techniques en attente — justifie et renforce toutes les exigences de production et de sécurité.

HTTPS/SSL
Déploiement sécurisé
OWASP Top 10
Conformité sécurité
Pentest
Audit inter-équipes
Legacy → Prod
Gestion dette technique
🏦

Présentation de NexPay SAS

PME Fintech · Lyon · Série A · Prestataires mandatés
Contexte client

NexPay a été fondée en 2018 à Lyon par deux anciens cadres de Crédit Agricole souhaitant simplifier la gestion des paiements pour les TPE et PME françaises. En 2024, NexPay lève 2,8 M€ en Série A. Le nouveau CTO, Mehdi Aouad, vous mandate en tant que prestataires pour livrer un prototype fonctionnel, sécurisé et documenté avant le premier board post-levée. L'ancienne application est un fichier PHP spaghetti de 40 000 lignes — sans framework, sans tests, avec des requêtes SQL directement dans les vues. La dette technique est totale.

Failles identifiées sur l'ancienne plateforme

⚠ Mots de passe en MD5
⚠ Pas de protection CSRF
⚠ API sans authentification
⚠ Headers serveur exposés
⚠ Pas de rate limiting
⚠ Tokens en clair en BDD
"On n'a pas besoin d'un produit parfait, on a besoin d'un prototype qui prouve qu'on peut construire quelque chose de solide. Et si vous me livrez une API sans authentification, je ne signe pas le bon de commande."
— Mehdi Aouad, CTO NexPay SAS

Contraintes du projet

👥 Équipe

Équipes de 2 à 3 étudiants. Chaque membre doit être capable de défendre l'ensemble du projet lors de la soutenance.

📅 Durée

1 semaine intensive (lundi → vendredi). Livraison le vendredi avant soutenance. Pas de report possible.

🏗️ Architecture

3 composants interdépendants : backend Symfony 6, frontend Vue.js 3, microservice Node.js/Express. Dépôt Git unique structuré.

⚔️ Audit inter-équipes

Le jeudi : chaque équipe tente de pénétrer l'application d'une autre équipe. Le rapport d'audit est un livrable évalué.

🛡️ Sécurité obligatoire

HTTPS + certificat SSL/TLS, OWASP Top 10 traité et documenté, JWT avec rôles, bcrypt, rate limiting, headers de sécurité.

🔌

Partenaires & Intégrations Techniques

3 partenaires · API REST · Webhooks · Dashboard consolidé

NexPay a signé des lettres d'intention avec trois partenaires stratégiques qui attendent une API publique fiable, versionnée et documentée. Votre architecture doit répondre à leurs besoins techniques spécifiques.

PartenaireTypeBesoin techniqueImpact BC03
Pennylane Logiciel comptable Recevoir les transactions en temps réel via webhook Microservice Node.js · Webhook sortant · Fiabilité en production
Qonto Néobanque Synchroniser soldes et virements via API REST API versionnée · SLA · Documentation Swagger
Réseau franchises 80 points de vente Dashboard consolidé multi-comptes Gestion des rôles · Accès multi-comptes · Performance
👥

Personas Utilisateurs

4 profils · Chaque choix UX doit se justifier par un persona
PersonaRôleBesoins principaux
🧁 Sophie Gérante de boulangerie · Cliente finale Voir ses transactions, exporter en PDF, recevoir des alertes de solde. Pas technique — l'UX est primordiale.
📊 Karim DAF d'une franchise · Client B2B API fiable, données consolidées sur 80 points de vente, accès multi-comptes avec contrôle des droits.
👩‍💻 Amina Développeuse Pennylane · Partenaire technique Documentation claire (Swagger), webhooks stables et idempotents, tokens d'API sécurisés et révocables.
🏗️ Mehdi CTO NexPay · Commanditaire Architecture maintenable, conformité sécurité, time-to-market rapide. Il lira votre rapport ligne par ligne.

Tâches de Développement & Consignes Précises

3 phases · Backend · Frontend · Mise en production & Sécurité
Le projet est structuré en 3 phases interdépendantes, chacune évaluée sur des compétences précises du Bloc 3. La phase de sécurisation n'est pas un ajout en fin de projet — elle traverse l'ensemble du développement. Chaque décision technique doit être justifiée dans le rapport car "les investisseurs lisent les rapports".
🐘
Phase 1 — Architecture & Backend Symfony
Refonte du legacy · API REST · JWT · Documentation Swagger
BC03 — Architecture & déploiement
  • 1
    Repartez de zéro avec Symfony 6 en appliquant une architecture propre. Séparation stricte obligatoire : Controllers (routing uniquement), Services (logique métier), Repositories (accès données), Entités Doctrine (User, Account, Transaction). Justifiez chaque choix d'architecture dans le rapport technique.
  • 2
    Concevez une API REST robuste : codes HTTP corrects pour chaque cas (200, 201, 400, 401, 403, 404, 422), gestion d'erreurs structurée en JSON, pagination sur les listes, sérialisation propre avec le composant Serializer de Symfony. L'API doit être utilisable par Qonto dès le premier jour.
  • 3
    Documentez l'API avec Swagger / NelmioApiDoc. La documentation doit être accessible sur /api/doc, décrire tous les endpoints, inclure les schémas de requête/réponse et les codes d'erreur. C'est la documentation qu'Amina (Pennylane) utilisera pour intégrer votre API.
  • 4
    Implémentez l'authentification JWT avec LexikJWTAuthenticationBundle et la gestion des rôles (Admin, Client, Partenaire). Les endpoints sont protégés selon le rôle — une API sans authentification bloque le bon de commande de Mehdi.
Lien BC03 — dette technique

La justification de la refonte depuis le legacy (40 000 lignes PHP sans framework) est un exercice de gestion de la dette technique — compétence centrale du BC03. Votre rapport doit expliquer pourquoi une refonte complète a été choisie plutôt qu'une modernisation progressive, avec les risques associés.

Phase 2 — Frontend Vue.js & Microservice Node.js
SPA · Temps réel · Webhook sortant · API tierce
BC03 — Intégrations & évolution
  • 1
    Développez un SPA Vue.js 3 moderne qui consomme l'API Symfony via Axios. Couvrez au minimum 3 écrans : Dashboard (transactions en temps réel), Liste des transactions, Profil utilisateur. La gestion des erreurs côté client est obligatoire (états de chargement, messages d'erreur, feedback visuel).
  • 2
    Implémentez l'affichage en temps réel des transactions via polling ou WebSocket Node.js. Sophie (boulangerie) ne doit pas avoir à rafraîchir manuellement pour voir ses nouvelles transactions.
  • 3
    Développez le microservice Node.js/Express : webhook sortant simulant une notification Pennylane à chaque nouvelle transaction. Le webhook doit être idempotent (Amina l'a exigé), gérer les retentatives en cas d'échec, et logger chaque appel.
  • 4
    Intégrez une API tierce fonctionnelle (Stripe sandbox pour les paiements, OpenExchangeRates pour les taux de change, ou équivalent). L'intégration doit être documentée et gérer les erreurs de l'API externe (timeout, quota dépassé).
Lien BC03 — pilotage de l'évolution

Le microservice Node.js représente une extension évolutive de l'architecture — ajout d'un nouveau composant sans modifier le cœur Symfony. Expliquez dans votre rapport comment ce choix architectural facilite les futures intégrations avec de nouveaux partenaires (Qonto, marketplaces).

🛡️
Phase 3 — Sécurisation, Mise en Production & Audit
HTTPS · OWASP Top 10 · Rate limiting · Pentest inter-équipes
BC03 — Mise en production & sécurité
  • 1
    Configurez HTTPS avec un certificat SSL/TLS valide (Let's Encrypt ou certificat auto-signé documenté). Toutes les communications entre client, API et microservice doivent être chiffrées. Documentez la configuration dans le rapport.
  • 2
    Traitez et documentez l'OWASP Top 10 pour chacune des failles identifiées sur l'ancienne plateforme : XSS (Content-Security-Policy), CSRF (protection Symfony), SQL Injection (Doctrine paramétré), IDOR (vérification d'ownership), Broken Auth (JWT + expiration). Pour chaque faille : état avant, mesure appliquée, preuve (code ou config).
  • 3
    Configurez les headers de sécurité côté Symfony (CORS strict, CSP) et côté Node.js (Helmet.js). Mettez en place un rate limiting sur les endpoints sensibles (login, register, transactions) avec retour 429 explicite et headers Retry-After.
  • 4
    Participez à l'audit inter-équipes du jeudi : tentez de pénétrer l'application d'une autre équipe (injection, brute-force, IDOR, token replay…). Produisez un rapport d'audit formalisé décrivant les vecteurs testés, les vulnérabilités trouvées (ou non) et les recommandations correctives.
  • 5
    Hashage des mots de passe avec bcrypt (facteur de coût ≥ 12). Aucun token, mot de passe ou clé API ne doit apparaître en clair dans la base de données, les logs ou le code source. Un scan automatique du repo (truffleHog ou équivalent) sera réalisé lors de la soutenance.
Critère éliminatoire — Sécurité

Les investisseurs ont posé une condition formelle : conformité OWASP avant tout déploiement en production. Une application livrée sans authentification JWT, sans HTTPS ou avec des mots de passe MD5 sera considérée comme non conforme au BC03 et la note sera plafonnée.

📅

Planning de la Semaine

5 jours · Organisation jour par jour
Lundi — Cadrage & Architecture
Matin : Brief projet, formation des équipes, choix des fonctionnalités
Après-midi : Modélisation BDD (entités, relations), design des endpoints API, wireframes Vue.js
📌 Livrable du jour : Diagramme BDD validé + liste des endpoints API + justification architecture dans le README
Mardi — Backend Symfony
Création des entités Doctrine (User, Account, Transaction) + migrations · Endpoints REST + sérialisation JSON + codes HTTP
Authentification JWT (LexikJWTAuthenticationBundle) · Gestion des rôles et permissions · Documentation Swagger
Compétences BC03 couvertes : Architecture logicielle · API publique · Gestion de la dette technique
Mercredi — Vue.js + Node.js
SPA Vue.js 3 (Dashboard, Transactions, Profil) · Consommation API via Axios + gestion tokens JWT
Microservice Node.js/Express — webhook sortant Pennylane · Intégration API tierce
Compétences BC03 couvertes : Intégrations partenaires · Pilotage de l'évolution · Architecture microservices
Jeudi — Sécurité & Audit Inter-équipes ⚔️
Configuration HTTPS + certificat SSL/TLS · Protection OWASP Top 10 (XSS, CSRF, SQL Injection, IDOR…)
Rate limiting + headers de sécurité (CORS, CSP, Helmet.js) · Validation des entrées + bcrypt
⚔️ Audit inter-équipes : chaque équipe tente de pénétrer l'application d'une autre · Rapport d'audit formalisé
Compétences BC03 couvertes : Mise en production · Sécurisation · Conformité OWASP · Audit
Vendredi — Finalisation & Soutenances
Matin : Finalisation du code, rédaction du rapport technique, préparation des slides
Après-midi : Soutenances — 15 min de démo live + 10 min de questions jury
Remise : Archive ZIP ou lien GitHub + rapport PDF dans docs/
📊

Barème de Notation — 25 Points

Grille d'évaluation BC03 · RNCP 38822
Axe d'évaluation Critères détaillés Points
Backend Symfony & API REST Architecture propre (MVC, services, repositories) — 2 pts · Endpoints fonctionnels, codes HTTP corrects, sérialisation JSON — 2 pts · Documentation Swagger complète — 1 pt 5 pts
Vue.js + Node.js SPA Vue.js fonctionnelle avec 3 écrans minimum — 2 pts · Affichage en temps réel (polling ou WebSocket) — 1 pt · Microservice Node.js / webhook opérationnel — 1 pt 4 pts
Web Services & Intégrations Intégration API tierce fonctionnelle — 1,5 pt · Gestion des codes HTTP, pagination et formats JSON — 1,5 pt 3 pts
Sécurité Web & Mise en production Authentification JWT + gestion des rôles — 2 pts · OWASP Top 10 traité et documenté — 2 pts · Headers de sécurité + rate limiting — 1 pt 5 pts
Rapport Technique Clarté et profondeur technique — 2 pts · Justification des choix d'architecture — 2 pts · Analyse des failles identifiées et corrigées — 1 pt 5 pts
Présentation Orale & Démo Qualité de la démo live et clarté des slides — 1,5 pt · Réponses aux questions du jury — 1,5 pt 3 pts
Fonctionnalités bonus
  • Export PDF des relevés de compte
  • Authentification OAuth2 pour les partenaires externes
  • Déploiement sur VPS avec Nginx + certificat Let's Encrypt
  • Tests unitaires PHPUnit (couverture > 60%)
  • CI/CD avec GitHub Actions
  • Rapport d'audit de sécurité inter-équipe formalisé (bonus spécifique BC03)
Livrables à remettre
  • Lien GitHub ou archive ZIP (NomPrenom1_NomPrenom2_NexPay.zip)
  • README.md avec instructions d'installation complètes
  • Rapport PDF (5–8 pages) dans le dossier docs/
  • Soutenance : 15 min démo live + 10 min questions jury
Contenu du rapport technique (BC03)
  • Architecture et justification des choix techniques
  • Description des endpoints + formats JSON
  • Analyse des failles OWASP identifiées et mesures correctives
  • Rapport d'audit inter-équipe (vecteurs testés + résultats)
  • Difficultés rencontrées et solutions — améliorations futures