Aller au contenu principal

Module 15: Projet Final

Objectif du Projet​

Developper une application complete qui demontre votre maitrise de Spring Boot en integrant les concepts appris tout au long de la formation.

Duree estimee: 20-30 heures


Options de Projet​

Choisissez l'un des quatre projets suivants:

Option A: E-Commerce Platform​

Une plateforme de commerce electronique complete avec:

  • Catalogue de produits
  • Gestion du panier
  • Systeme de commandes
  • Paiement (simulation)
  • Notifications

Option B: Task Management System​

Un systeme de gestion de taches/projets avec:

  • Gestion des projets et taches
  • Attribution des taches
  • Suivi du temps
  • Rapports et statistiques
  • Notifications en temps reel

Option C: API de Reservation​

Un systeme de reservation (hotels, restaurants, evenements) avec:

  • Catalogue de ressources
  • Disponibilites et calendrier
  • Processus de reservation
  • Confirmation et rappels
  • Tableau de bord admin

Option D: Authentification avec Email (Recommande)​

Un systeme d'authentification complet avec:

  • Inscription avec validation par email
  • Connexion JWT
  • Recuperation de mot de passe par email
  • Gestion des roles (USER/ADMIN)
  • Administration des utilisateurs

Option E: Formulaire de Contact et Gestion de Leads​

Un systeme de formulaire de contact avec gestion de leads (CRM simplifie):

  • Formulaire de contact public → cree automatiquement un Lead
  • Pipeline de conversion (NEW → CONTACTED → QUALIFIED → CONVERTED)
  • Stockage PostgreSQL des leads, messages et notes
  • Envoi d'emails automatiques (notification admin + confirmation)
  • Rappels automatiques pour leads non contactes (@Scheduled)
  • Tableau de bord admin avec statistiques du pipeline

Exigences Techniques​

Obligatoires (70 points)​

CategorieExigencePoints
ArchitectureStructure MVC propre5
Separation des couches (Controller/Service/Repository)5
DTOs pour les transferts de donnees5
API RESTEndpoints CRUD complets5
Codes HTTP appropries3
Validation des entrees (@Valid)5
PersistenceSpring Data JPA5
Relations entre entites (OneToMany, ManyToMany)5
Requetes personnalisees3
SecuriteSpring Security configure5
Authentification JWT5
Roles et autorisations4
TestsTests unitaires (min 10)5
Tests d'integration (min 5)5
Couverture > 60%5

Optionnels (30 points bonus)​

CategorieExigencePoints
CacheRedis caching5
MessagingRabbitMQ integration5
WebSocketTemps reel5
DockerDockerfile + docker-compose5
CI/CDGitHub Actions pipeline5
DocumentationSwagger/OpenAPI5
MonitoringActuator + Prometheus5
MicroservicesArchitecture distribuee10

Structure du Projet​

projet-final/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── projet/
│ │ │ ├── ProjetApplication.java
│ │ │ ├── config/
│ │ │ │ ├── SecurityConfig.java
│ │ │ │ └── WebConfig.java
│ │ │ ├── controller/
│ │ │ │ ├── AuthController.java
│ │ │ │ └── ...Controller.java
│ │ │ ├── dto/
│ │ │ │ ├── request/
│ │ │ │ └── response/
│ │ │ ├── exception/
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ └── ...Exception.java
│ │ │ ├── model/
│ │ │ │ └── ...Entity.java
│ │ │ ├── repository/
│ │ │ │ └── ...Repository.java
│ │ │ ├── security/
│ │ │ │ ├── JwtService.java
│ │ │ │ └── ...
│ │ │ └── service/
│ │ │ └── ...Service.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── application-dev.yml
│ │ └── application-prod.yml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── projet/
│ ├── controller/
│ ├── service/
│ └── repository/
├── docker-compose.yml
├── Dockerfile
├── README.md
└── pom.xml

Livrables​

1. Code Source​

  • Repository GitHub public ou prive
  • Code propre et documente
  • README.md complet

2. Documentation​

Le README.md doit contenir:

  • Description du projet
  • Technologies utilisees
  • Instructions d'installation
  • Instructions d'execution
  • Documentation API (endpoints)
  • Screenshots/demos

3. Demonstration​

  • Video de demonstration (5-10 min)
  • Ou presentation en direct
  • Montrer les fonctionnalites principales
  • Expliquer les choix techniques

Criteres d'Evaluation​

Note Technique (60%)​

CritereDescriptionPoids
FonctionnaliteL'application fonctionne correctement20%
ArchitectureCode bien structure et maintenable15%
Bonnes pratiquesRespect des conventions Spring15%
TestsCouverture et qualite des tests10%

Note Qualite (25%)​

CritereDescriptionPoids
CodeLisibilite et clarte10%
DocumentationREADME et commentaires10%
Gestion erreursRobustesse5%

Note Presentation (15%)​

CritereDescriptionPoids
DemonstrationPresentation claire10%
ReponsesMaitrise du sujet5%

Echeancier Suggere​

SemaineTaches
1Planification, configuration projet, modele de donnees
2API REST de base, entites JPA, repository
3Services metier, validation, DTOs
4Securite, JWT, authentification
5Tests unitaires et integration
6Fonctionnalites avancees (cache, messaging, etc.)
7Docker, CI/CD, documentation
8Finalisation, tests, preparation demo

Ressources​

Documentation Officielle​

Outils​

  • IntelliJ IDEA ou VS Code
  • Postman ou Insomnia
  • Docker Desktop
  • Git

FAQ​

Q: Puis-je travailler en equipe?​

R: Oui, equipes de 2-3 personnes maximum. La charge de travail attendue augmente proportionnellement.

Q: Puis-je proposer un autre projet?​

R: Oui, avec approbation prealable. Le projet doit demontrer les memes competences.

Q: Quelle base de donnees utiliser?​

R: PostgreSQL recommande. H2 acceptable pour le developpement.

Q: Le deploiement est-il obligatoire?​

R: Non, mais fortement recommande (bonus points). Options: Heroku, Railway, AWS, etc.


Exemple de Projet​

Voir les specifications detaillees pour chaque option:


Bonne Chance!​

Ce projet est l'occasion de demontrer tout ce que vous avez appris.

N'hesitez pas a:

  • Poser des questions
  • Demander des clarifications
  • Partager vos progres

Retour a l'accueil