Module 15: Final Project
Project Objective
Develop a complete application that demonstrates your mastery of Spring Boot by integrating the concepts learned throughout the course.
Estimated Duration: 20-30 hours
Project Options
Choose one of the following four projects:
Option A: E-Commerce Platform
A complete e-commerce platform with:
- Product catalog
- Cart management
- Order system
- Payment (simulation)
- Notifications
Option B: Task Management System
A task/project management system with:
- Project and task management
- Task assignment
- Time tracking
- Reports and statistics
- Real-time notifications
Option C: Booking API
A booking system (hotels, restaurants, events) with:
- Resource catalog
- Availability and calendar
- Booking process
- Confirmation and reminders
- Admin dashboard
Option D: Email Authentication (Recommended)
A complete authentication system with:
- Registration with email validation
- JWT login
- Password recovery via email
- Role management (USER/ADMIN)
- User administration
Option E: Contact Form and Lead Management
A contact form system with lead management (simplified CRM):
- Public contact form → automatically creates a Lead
- Conversion pipeline (NEW → CONTACTED → QUALIFIED → CONVERTED)
- PostgreSQL storage for leads, messages, and notes
- Automatic email sending (admin notification + confirmation)
- Automatic reminders for uncontacted leads (@Scheduled)
- Admin dashboard with pipeline statistics
Technical Requirements
Mandatory (70 points)
| Category | Requirement | Points |
|---|---|---|
| Architecture | Clean MVC structure | 5 |
| Layer separation (Controller/Service/Repository) | 5 | |
| DTOs for data transfers | 5 | |
| REST API | Complete CRUD endpoints | 5 |
| Appropriate HTTP codes | 3 | |
| Input validation (@Valid) | 5 | |
| Persistence | Spring Data JPA | 5 |
| Entity relationships (OneToMany, ManyToMany) | 5 | |
| Custom queries | 3 | |
| Security | Spring Security configured | 5 |
| JWT authentication | 5 | |
| Roles and authorizations | 4 | |
| Tests | Unit tests (min 10) | 5 |
| Integration tests (min 5) | 5 | |
| Coverage > 60% | 5 |
Optional (30 bonus points)
| Category | Requirement | Points |
|---|---|---|
| Cache | Redis caching | 5 |
| Messaging | RabbitMQ integration | 5 |
| WebSocket | Real-time | 5 |
| Docker | Dockerfile + docker-compose | 5 |
| CI/CD | GitHub Actions pipeline | 5 |
| Documentation | Swagger/OpenAPI | 5 |
| Monitoring | Actuator + Prometheus | 5 |
| Microservices | Distributed architecture | 10 |
Project Structure
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
Deliverables
1. Source Code
- Public or private GitHub repository
- Clean and documented code
- Complete README.md
2. Documentation
The README.md must contain:
- Project description
- Technologies used
- Installation instructions
- Execution instructions
- API documentation (endpoints)
- Screenshots/demos
3. Demonstration
- Demo video (5-10 min)
- Or live presentation
- Show main features
- Explain technical choices
Evaluation Criteria
Technical Score (60%)
| Criteria | Description | Weight |
|---|---|---|
| Functionality | The application works correctly | 20% |
| Architecture | Well-structured and maintainable code | 15% |
| Best practices | Compliance with Spring conventions | 15% |
| Tests | Coverage and quality of tests | 10% |
Quality Score (25%)
| Criteria | Description | Weight |
|---|---|---|
| Code | Readability and clarity | 10% |
| Documentation | README and comments | 10% |
| Error handling | Robustness | 5% |
Presentation Score (15%)
| Criteria | Description | Weight |
|---|---|---|
| Demonstration | Clear presentation | 10% |
| Responses | Mastery of the subject | 5% |
Suggested Timeline
| Week | Tasks |
|---|---|
| 1 | Planning, project setup, data model |
| 2 | Basic REST API, JPA entities, repository |
| 3 | Business services, validation, DTOs |
| 4 | Security, JWT, authentication |
| 5 | Unit and integration tests |
| 6 | Advanced features (cache, messaging, etc.) |
| 7 | Docker, CI/CD, documentation |
| 8 | Finalization, testing, demo preparation |
Resources
Official Documentation
Tools
- IntelliJ IDEA or VS Code
- Postman or Insomnia
- Docker Desktop
- Git
FAQ
Q: Can I work in a team?
A: Yes, teams of 2-3 people maximum. The expected workload increases proportionally.
Q: Can I propose another project?
A: Yes, with prior approval. The project must demonstrate the same skills.
Q: Which database should I use?
A: PostgreSQL recommended. H2 acceptable for development.
Q: Is deployment mandatory?
A: No, but highly recommended (bonus points). Options: Heroku, Railway, AWS, etc.
Project Example
See the detailed specifications for each option:
- Option A: E-Commerce
- Option B: Task Management
- Option C: Reservations
- Option D: Email Authentication (Recommended)
- Option E: Contact Form
Good Luck!
This project is an opportunity to demonstrate everything you have learned.
Feel free to:
- Ask questions
- Request clarifications
- Share your progress