---
title: "GamesUP - Plateforme E-Commerce de Jeux de Société avec Recommandations ML"
description: "API backend complète pour une plateforme e-commerce de jeux de société avec moteur de recommandation KNN, sécurité JWT et 81% de couverture de tests - construite avec Spring Boot 3, Python FastAPI et Docker."
locale: "fr"
canonical: "https://portfolio.josedacosta.info/fr/realisations/gamesup-plateforme-ecommerce-ml"
source: "https://portfolio.josedacosta.info/fr/realisations/gamesup-plateforme-ecommerce-ml.md"
html_source: "https://portfolio.josedacosta.info/fr/realisations/gamesup-plateforme-ecommerce-ml"
author: "José DA COSTA"
date: "2024"
type: "achievement"
slug: "gamesup-plateforme-ecommerce-ml"
tags: ["Java 17", "Spring Boot 3.3.4", "Spring Security 6", "JWT", "JPA/Hibernate", "MySQL 8.0", "Python 3.11", "FastAPI", "scikit-learn", "Docker Compose", "JUnit 5", "Mockito", "JaCoCo"]
generated_at: "2026-04-23T15:45:13.629Z"
---

# GamesUP - Plateforme E-Commerce de Jeux de Société avec Recommandations ML

API backend complète pour une plateforme e-commerce de jeux de société avec moteur de recommandation KNN, sécurité JWT et 81% de couverture de tests - construite avec Spring Boot 3, Python FastAPI et Docker.

**Date:** Septembre 2024 - Janvier 2025  
**Duration:** ~8 semaines de développement actif  
**Role:** Lead Technique & Développeur Solo (Assiste par IA)  
**Technologies:** Java 17, Spring Boot 3.3.4, Spring Security 6, JWT, JPA/Hibernate, MySQL 8.0, Python 3.11, FastAPI, scikit-learn, Docker Compose, JUnit 5, Mockito, JaCoCo

### Key Metrics

- Lignes de code: **-** - Java + Python
- Tests automatises: **-** - 273 unitaires + 91 intégration
- Couverture de code: **-** - JaCoCo (97% sur les services)
- Endpoints API: **-** - Endpoints REST sur 11 controllers

## Présentation

_Définition et périmètre du projet_

### Domain

E-commerce spécialisé dans les jeux de société - gestion de catalogue, commandes, recommandations, avis utilisateurs

### Target Users

Acheteurs de jeux de société (B2C) et administrateurs de la plateforme. Frontend (Angular) prévu mais non inclus dans cette phase (livraison backend uniquement).

**Content:** **GamesUP** est une API backend pour une plateforme e-commerce de jeux de société qui intégré un **système de recommandation par apprentissage automatique** base sur l'algorithme K-Nearest Neighbors (KNN). Le projet a été réalisé dans le cadre d'une étude de cas professionnelle pour une certification de niveau 7 (Expert en Ingenierie du Logiciel) delivrée par l'ESIEA via Visiplus Digital Learning.

La plateforme couvre l'ensemble du cycle e-commerce : gestion du catalogue produits, commandes multi-lignes avec gestion des stocks, authentification JWT avec contrôle d'accès base sur les rôles, recommandations personnalisees, avis et notations, et listes de souhaits.

Un code preexistant laisse par un stagiaire a été evalue et juge en dessous des standards professionnels. La décision a été prise de **reconstruire entièrement le backend**, en appliquant rigoureusement les principes SOLID, une architecture en couches et des tests complets.

**Domain:** Domaine

**Target Users:** Utilisateurs cibles

**Functional Scope:** Périmètre fonctionnel

**Scope Catalog:** Catalogue produits (CRUD)

**Scope Orders:** Commandes multi-lignes & stocks

**Scope Auth:** Authentification JWT & RBAC

**Scope M L:** Recommandations ML (KNN)

**Scope Reviews:** Avis & notations

**Scope Wishlist:** Gestion de wishlists

**Scope Search:** Recherche multi-critères

**Scope Docker:** Orchestration Docker

## Objectifs, Contexte, Enjeux & Risques

_Vision stratégique et contraintes_

### Context

Le projet est ne d'une exigence de certification professionnelle (ESIEA Niveau 7, Bloc 4 - Conception avancée de l'architecture de logiciel). Le backend existant generait des dysfonctionnements récurrents impactant le chiffre d'affaires et l'expérience utilisateur. Un stagiaire avait été charge de créer une nouvelle API Spring Boot, mais le code ne respectait pas les standards de qualité.

José DA COSTA a repris le projet avec pour mission de **reconstruire entièrement le backend** en une solution professionnelle, fonctionnelle et evolutive. Le projet a été réalisé individuellement sur environ 8 semaines, avec un développement assisté par IA (Claude Code) pour l'implémentation sous la direction technique et les décisions d'architecture de José.

### Stake Quality

Démontrer la maîtrise de la conception avancée de logiciel (SOLID, design patterns, architecture en couches) à travers une application concrète

### Stake Innovation

Intégrer un système de recommandation ML (KNN) dans une architecture e-commerce classique via une communication inter-API

### Stake Certification

Valider 4 compétences du Bloc 4 du titre RNCP Expert en Ingenierie du Logiciel (C.14, C.16, C.17, C.18)

- Reconstruire l'API Spring Boot avec une architecture en couches et les principes SOLID
- Implementer Spring Security 6 avec authentification JWT et gestion des rôles (ADMIN, CLIENT)
- Développer un système de recommandation KNN via un microservice Python FastAPI
- Atteindre minimum 70% de couverture de tests avec JaCoCo, JUnit 5 et Mockito
- Produire une documentation UML complète (diagrammes de classes, composants, sequence, architecture)

**Objectives:** Objectifs

**Context:** Contexte

**Stakes:** Enjeux

**Stake Quality:** Qualité architecturale

**Stake Innovation:** Innovation technique

**Stake Certification:** Certification professionnelle

**Risks:** Risques identifies

**Risk1 Title:** Code du stagiaire inutilisable

**Risk1 Desc:** Le code existant ne respectait pas les standards de qualité, nécessitant une refonte complete.

**Risk2 Title:** Modèle ML non entrainable

**Risk2 Desc:** Données de production insuffisantes pour l'entrainement KNN. Attenuation : mode demo fonctionnel avec architecture prete pour un entrainement futur.

**Risk3 Title:** Failles de sécurité JWT

**Risk3 Desc:** Une implémentation JWT incorrecte pourrait exposer l'application. Attenuation : implémentation rigoureuse de Spring Security 6 + HMAC-SHA256.

**Risk4 Title:** Couverture de tests < 70%

**Risk4 Desc:** Stratégie de test systematique nécessaire pour depasser le seuil JaCoCo de 70% par package.

**Risk5 Title:** Complexité inter-API

**Risk5 Desc:** La communication Java-Python via RestTemplate nécessitait des healthchecks et l'orchestration Docker Compose.

## Les étapes - Ce que j'ai fait

_Phases chronologiques et contributions personnelles_

- Phase 1 - Architecture & UML
- Phase 2 - Fondations JPA
- Phase 3 - Couche Service avec SOLID
- Phase 4 - Sécurité & JWT
- Phase 5 - Controllers REST & DTOs
- Phase 6 - Système de recommandation ML
- Phase 7 - Tests & Qualité

**Phase1 Period:** Semaines 1-2

**Phase2 Period:** Semaines 2-3

**Phase3 Period:** Semaines 4-5

**Phase4 Period:** Semaines 5-6

**Phase5 Period:** Semaine 6

**Phase6 Period:** Semaine 7

**Phase7 Period:** Semaine 8

## Les acteurs - Les interactions

_Collaboration et parties prenantes_

### Work Method

Le projet illustre un mode de travail **"développeur augmente par IA"** : José a joue le rôle de CTO/directeur de projet definissant les objectifs, prenant les décisions d'architecture, identifiant les problèmes et validant les livrables. Claude Code a joue le rôle de développeur executant, realisant l'intégralité de l'implémentation technique sous la direction de José. Cette approche est cohérente avec l'évolution du métier de développeur à l'ere de l'IA generative.

**Content:** Il s'agissait d'un **projet individuel** réalisé avec un développement assisté par IA. José DA COSTA a agi en tant que **Lead Technique et Directeur de Projet**, responsable de toutes les décisions d'architecture, revues qualité, analyse des exigences et validation du livrable final.

**Claude Code (IA)** a servi de partenaire d'implémentation, executant le code sous la direction de José sur la base d'environ 100 prompts traces dans 3 fichiers documentes. José a identifié les problèmes (problèmes d'encodage dans PHPMyAdmin, incohérences de documentation), pris les décisions organisationnelles (renommage de dossiers, conventions de structure de fichiers) et produit le document Word final pour la soumission à la certification.

Le code original du stagiaire a été evalue et entièrement remplace - aucun élément du livrable final ne contient de code de la tentative initiale. La contribution du stagiaire se limité au scénario pedagogique justifiant la refonte.

**Team Composition:** Composition de l'équipe

**Team Jose:** José DA COSTA - Direction technique, pilotage, revue qualité, décisions d'architecture, tests manuels, rédaction du document final

**Team A I:** Claude Code (IA) - Implémentation du code, tests, documentation, diagrammes, configuration Docker

**Team Intern:** Stagiaire (anonyme) - Développeur initial (code entièrement reconstruit)

**Stakeholders:** Parties prenantes externes

**Stakeholder Training:** Visiplus Digital Learning - Organisme de formation

**Stakeholder Certification:** ESIEA - Institution certificatrice (Niveau 7 - Expert en Ingenierie du Logiciel)

**Stakeholder Block:** Bloc 4 - Conception avancée de l'architecture de logiciel

**Work Method:** Methode de travail

## Les résultats - Pour moi, pour le projet

_Résultats mesurables et impact_

**For Project:** Pour le projet

**For Me:** Pour moi

## Les lendemains du projet

_Ce qui s'est passe après la livraison_

**Content:** **Livraison immédiate :** Le projet a été soumis sous forme d'étude de cas professionnelle complète (PDF, 20+ pages) pour la certification ESIEA Niveau 7, Bloc 4 - Conception avancée de l'architecture de logiciel. Le livrable comprenait le code source complet, la configuration Docker, les diagrammes UML, les rapports de couverture de tests et un document de réflexion critique.

**État actuel :** Le backend est fonctionnel et déployable via Docker Compose. Le modèle ML fonctionne en mode demo (algorithme KNN implémenté mais non entraine sur des données de production). Le frontend Angular mentionne dans l'architecture resté à construire, ce qui limité la demonstrabilite du produit final aux tests au niveau API.

**Perspective à long terme :** Les décisions d'architecture (SOLID, conception en couches, services basés sur des interfaces) ont prouve leur valeur en termes de testabilité (81% de couverture) et d'extensibilite. Le système de recommandation a été conçu avec un chemin d'évolution progressive : V1 (filtrage collaboratif Java) -> V2 (KNN Python, pret mais non entraine) -> V3 (Deep Learning, futur). L'interface RecommendationService permet de changer d'implémentation sans modifier le reste du code.

**Depot :** Le code source est maintenu dans un depot GitHub prive avec un miroir public sur GitFront pour évaluation.

## Mon regard critique

_Analyse rétrospective honnete_

### Strength

- [object Object]
- [object Object]
- [object Object]
- [object Object]

### Improvement

- [object Object]
- [object Object]
- [object Object]
- [object Object]
- [object Object]

### Would Do

- Adopter le TDD (Test-Driven Development) - les tests ont été ecrits après le code en Phase 8, manquant le feedback de design précoce
- Intégrer la sécurité des la Phase 2 au lieu de la Phase 5, evitant les problèmes de configuration des tests avec Spring Security
- Rediger des user stories formelles avec critères d'acceptation avant l'implémentation
- Utiliser MapStruct au lieu de mappers manuels pour réduire le boilerplate
- Ajouter la documentation Swagger/OpenAPI pour une exploration interactive de l'API

### Lesson

- Les principes SOLID ne sont pas theoriques - leur application concrète amélioré considérablement la qualité, la testabilité et l'extensibilite du code
- La documentation continue est plus efficace que la documentation en fin de projet - rediger au fur et à mesure produit une meilleure qualité
- Les tests permettent une évolution sereine - avec 81% de couverture, le refactoring devient plus sur
- La sécurité doit être conçue des le départ - l'ajouter après coup créé des problèmes d'intégration (illustre par les échecs de tests de controllers)
- Un système de recommandation ML peut être intégré progressivement - le pattern interface permet de commencer simple et d'évoluer sans refonte majeure

**Strengths:** Ce qui a bien fonctionne

**Improvements:** Ce qui aurait pu être ameliore

**Would Do Differently:** Ce que je ferais différemment

**Lessons:** Leçons durables
