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)
| Categorie | Exigence | Points |
|---|---|---|
| Architecture | Structure MVC propre | 5 |
| Separation des couches (Controller/Service/Repository) | 5 | |
| DTOs pour les transferts de donnees | 5 | |
| API REST | Endpoints CRUD complets | 5 |
| Codes HTTP appropries | 3 | |
| Validation des entrees (@Valid) | 5 | |
| Persistence | Spring Data JPA | 5 |
| Relations entre entites (OneToMany, ManyToMany) | 5 | |
| Requetes personnalisees | 3 | |
| Securite | Spring Security configure | 5 |
| Authentification JWT | 5 | |
| Roles et autorisations | 4 | |
| Tests | Tests unitaires (min 10) | 5 |
| Tests d'integration (min 5) | 5 | |
| Couverture > 60% | 5 |
Optionnels (30 points bonus)
| Categorie | Exigence | Points |
|---|---|---|
| Cache | Redis caching | 5 |
| Messaging | RabbitMQ integration | 5 |
| WebSocket | Temps reel | 5 |
| Docker | Dockerfile + docker-compose | 5 |
| CI/CD | GitHub Actions pipeline | 5 |
| Documentation | Swagger/OpenAPI | 5 |
| Monitoring | Actuator + Prometheus | 5 |
| Microservices | Architecture distribuee | 10 |
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%)
| Critere | Description | Poids |
|---|---|---|
| Fonctionnalite | L'application fonctionne correctement | 20% |
| Architecture | Code bien structure et maintenable | 15% |
| Bonnes pratiques | Respect des conventions Spring | 15% |
| Tests | Couverture et qualite des tests | 10% |
Note Qualite (25%)
| Critere | Description | Poids |
|---|---|---|
| Code | Lisibilite et clarte | 10% |
| Documentation | README et commentaires | 10% |
| Gestion erreurs | Robustesse | 5% |
Note Presentation (15%)
| Critere | Description | Poids |
|---|---|---|
| Demonstration | Presentation claire | 10% |
| Reponses | Maitrise du sujet | 5% |
Echeancier Suggere
| Semaine | Taches |
|---|---|
| 1 | Planification, configuration projet, modele de donnees |
| 2 | API REST de base, entites JPA, repository |
| 3 | Services metier, validation, DTOs |
| 4 | Securite, JWT, authentification |
| 5 | Tests unitaires et integration |
| 6 | Fonctionnalites avancees (cache, messaging, etc.) |
| 7 | Docker, CI/CD, documentation |
| 8 | Finalisation, 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:
- Option A: E-Commerce
- Option B: Task Management
- Option C: Reservations
- Option D: Authentification Email (Recommande)
- Option E: Formulaire de Contact
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