Saltar al contenido principal

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íaRequisitoPuntos
ArquitecturaEstructura MVC limpia5
Separación de capas (Controller/Service/Repository)5
DTOs para transferencias de datos5
API RESTEndpoints CRUD completos5
Códigos HTTP apropiados3
Validación de entradas (@Valid)5
PersistenciaSpring Data JPA5
Relaciones entre entidades (OneToMany, ManyToMany)5
Consultas personalizadas3
SeguridadSpring Security configurado5
Autenticación JWT5
Roles y autorizaciones4
TestsTests unitarios (mínimo 10)5
Tests de integración (mínimo 5)5
Cobertura > 60%5

Opcionales (30 puntos extra)​

CategoríaRequisitoPuntos
CacheRedis caching5
MessagingIntegración RabbitMQ5
WebSocketTiempo real5
DockerDockerfile + docker-compose5
CI/CDPipeline GitHub Actions5
DocumentaciónSwagger/OpenAPI5
MonitoringActuator + Prometheus5
MicroservicesArquitectura distribuida10

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%)​

CriterioDescripciónPeso
FuncionalidadLa aplicación funciona correctamente20%
ArquitecturaCódigo bien estructurado y mantenible15%
Buenas prácticasRespeto de las convenciones Spring15%
TestsCobertura y calidad de los tests10%

Nota de Calidad (25%)​

CriterioDescripciónPeso
CódigoLegibilidad y claridad10%
DocumentaciónREADME y comentarios10%
Gestión de erroresRobustez5%

Nota de Presentación (15%)​

CriterioDescripciónPeso
DemostraciónPresentación clara10%
RespuestasDominio del tema5%

Cronograma Sugerido​

SemanaTareas
1Planificación, configuración del proyecto, modelo de datos
2API REST básica, entidades JPA, repository
3Servicios de negocio, validación, DTOs
4Seguridad, JWT, autenticación
5Tests unitarios e integración
6Funcionalidades avanzadas (cache, messaging, etc.)
7Docker, CI/CD, documentación
8Finalizació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:


¡Buena Suerte!​

Este proyecto es la oportunidad de demostrar todo lo que ha aprendido.

No dude en:

  • Hacer preguntas
  • Pedir aclaraciones
  • Compartir sus avances

Volver al inicio