Módulo 15: Proyecto Final
Objetivo del Proyecto
Desarrollar una aplicación completa que demuestre su dominio de Spring Boot integrando los conceptos aprendidos a lo largo de la formación.
Duración estimada: 20-30 horas
Opciones de Proyecto
Elija uno de los siguientes cuatro proyectos:
Opción A: Plataforma de E-Commerce
Una plataforma de comercio electrónico completa con:
- Catálogo de productos
- Gestión del carrito
- Sistema de pedidos
- Pago (simulación)
- Notificaciones
Opción B: Sistema de Gestión de Tareas
Un sistema de gestión de tareas/proyectos con:
- Gestión de proyectos y tareas
- Asignación de tareas
- Seguimiento de tiempo
- Informes y estadísticas
- Notificaciones en tiempo real
Opción C: API de Reservas
Un sistema de reservas (hoteles, restaurantes, eventos) con:
- Catálogo de recursos
- Disponibilidad y calendario
- Proceso de reserva
- Confirmación y recordatorios
- Panel de administración
Opción D: Autenticación con Email (Recomendado)
Un sistema de autenticación completo con:
- Registro con validación por email
- Inicio de sesión JWT
- Recuperación de contraseña por email
- Gestión de roles (USER/ADMIN)
- Administración de usuarios
Opción E: Formulario de Contacto y Gestión de Leads
Un sistema de formulario de contacto con gestión de leads (CRM simplificado):
- Formulario de contacto público → crea automáticamente un Lead
- Pipeline de conversión (NEW → CONTACTED → QUALIFIED → CONVERTED)
- Almacenamiento PostgreSQL de leads, mensajes y notas
- Envío automático de emails (notificación admin + confirmación)
- Recordatorios automáticos para leads no contactados (@Scheduled)
- Panel de administración con estadísticas del pipeline
Requisitos Técnicos
Obligatorios (70 puntos)
| Categoría | Requisito | Puntos |
|---|---|---|
| Arquitectura | Estructura MVC limpia | 5 |
| Separación de capas (Controller/Service/Repository) | 5 | |
| DTOs para transferencias de datos | 5 | |
| API REST | Endpoints CRUD completos | 5 |
| Códigos HTTP apropiados | 3 | |
| Validación de entradas (@Valid) | 5 | |
| Persistencia | Spring Data JPA | 5 |
| Relaciones entre entidades (OneToMany, ManyToMany) | 5 | |
| Consultas personalizadas | 3 | |
| Seguridad | Spring Security configurado | 5 |
| Autenticación JWT | 5 | |
| Roles y autorizaciones | 4 | |
| Tests | Tests unitarios (mínimo 10) | 5 |
| Tests de integración (mínimo 5) | 5 | |
| Cobertura > 60% | 5 |
Opcionales (30 puntos extra)
| Categoría | Requisito | Puntos |
|---|---|---|
| Cache | Redis caching | 5 |
| Messaging | Integración RabbitMQ | 5 |
| WebSocket | Tiempo real | 5 |
| Docker | Dockerfile + docker-compose | 5 |
| CI/CD | Pipeline GitHub Actions | 5 |
| Documentación | Swagger/OpenAPI | 5 |
| Monitoring | Actuator + Prometheus | 5 |
| Microservices | Arquitectura distribuida | 10 |
Estructura del Proyecto
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
Entregables
1. Código Fuente
- Repositorio GitHub público o privado
- Código limpio y documentado
- README.md completo
2. Documentación
El README.md debe contener:
- Descripción del proyecto
- Tecnologías utilizadas
- Instrucciones de instalación
- Instrucciones de ejecución
- Documentación de la API (endpoints)
- Capturas de pantalla/demos
3. Demostración
- Video de demostración (5-10 min)
- O presentación en vivo
- Mostrar las funcionalidades principales
- Explicar las decisiones técnicas
Criterios de Evaluación
Nota Técnica (60%)
| Criterio | Descripción | Peso |
|---|---|---|
| Funcionalidad | La aplicación funciona correctamente | 20% |
| Arquitectura | Código bien estructurado y mantenible | 15% |
| Buenas prácticas | Respeto de las convenciones Spring | 15% |
| Tests | Cobertura y calidad de los tests | 10% |
Nota de Calidad (25%)
| Criterio | Descripción | Peso |
|---|---|---|
| Código | Legibilidad y claridad | 10% |
| Documentación | README y comentarios | 10% |
| Gestión de errores | Robustez | 5% |
Nota de Presentación (15%)
| Criterio | Descripción | Peso |
|---|---|---|
| Demostración | Presentación clara | 10% |
| Respuestas | Dominio del tema | 5% |
Cronograma Sugerido
| Semana | Tareas |
|---|---|
| 1 | Planificación, configuración del proyecto, modelo de datos |
| 2 | API REST básica, entidades JPA, repository |
| 3 | Servicios de negocio, validación, DTOs |
| 4 | Seguridad, JWT, autenticación |
| 5 | Tests unitarios e integración |
| 6 | Funcionalidades avanzadas (cache, messaging, etc.) |
| 7 | Docker, CI/CD, documentación |
| 8 | Finalización, tests, preparación demo |
Recursos
Documentación Oficial
Herramientas
- IntelliJ IDEA o VS Code
- Postman o Insomnia
- Docker Desktop
- Git
FAQ
P: ¿Puedo trabajar en equipo?
R: Sí, equipos de 2-3 personas máximo. La carga de trabajo esperada aumenta proporcionalmente.
P: ¿Puedo proponer otro proyecto?
R: Sí, con aprobación previa. El proyecto debe demostrar las mismas competencias.
P: ¿Qué base de datos utilizar?
R: PostgreSQL recomendado. H2 aceptable para el desarrollo.
P: ¿Es obligatorio el despliegue?
R: No, pero es altamente recomendado (puntos extra). Opciones: Heroku, Railway, AWS, etc.
Ejemplo de Proyecto
Vea las especificaciones detalladas para cada opción:
- Opción A: E-Commerce
- Opción B: Task Management
- Opción C: Reservas
- Opción D: Autenticación Email (Recomendado)
- Opción E: Formulario de Contacto
¡Buena Suerte!
Este proyecto es la oportunidad de demostrar todo lo que ha aprendido.
No dude en:
- Hacer preguntas
- Pedir aclaraciones
- Compartir sus avances