01 - Introducción: la tienda, práctica guiada de DWS
Práctica guiada de Desarrollo Web en Entorno Servidor (DWS) en 2.º DAW. La aplicación — una tienda con catálogos y productos, pedidos y usuarios — nace tal y como se sabía construir al terminar 1.º DAW: Spring Boot, arquitectura por capas, persistencia JDBC y MariaDB, con un único endpoint. En cada tema se incorporan los conceptos nuevos del curso sobre la misma aplicación, desde el diseño del contrato (tema 02 — API First) hasta la seguridad declarativa (tema 07 — Integración con Spring Security).
Mapa de hitos
| Hito | Tema | Qué se incorpora |
|---|---|---|
| hito de partida | tras el tema 01 | Arquitectura por capas de 1.º DAW con la inversión de dependencias del repositorio; JDBC + MariaDB; un único endpoint, sin contrato |
| hito 04 | 02 — API First | El contrato de catálogos y productos se diseña antes de implementar; listado paginado; código generado; Swagger UI |
| hito 05 | 03 — Validación | Constraints en el contrato, ProblemDetail, value objects para invariantes, tests |
| hito 06 | 04 — Módulos | Módulo pedidos, API pública del catálogo, reserva de stock, ArchUnit y Spring Modulith |
| hito 07 | 05 — JPA | JDBC → JPA, Spring Data, MapStruct, paginación con Pageable, transacciones, Testcontainers |
| hito 08 | 06 — JWT | Módulo usuarios, login JWT (access + refresh), filtro stateless, identidad en la API |
| hito 09 | 07 — Spring Security | Filtro en la cadena de Spring Security, autorización por rutas y por método, 401/403 |
Especificación de la aplicación
Los requisitos funcionales — módulos, datos, reglas de negocio, roles y endpoints con su evolución — están en la especificación. Conviene releerla antes de empezar cada hito: describe siempre el estado final de la aplicación, y cada hito se acerca a él.
Cómo se trabaja
- Un repositorio propio por alumnado o equipo, con un tag por hito (
partida,hito-04,hito-05…). El diff entre tags muestra exactamente lo que el tema añadió. - El contrato OpenAPI vive en el repositorio desde el hito 04 y evoluciona con la API:
| Hito | Contrato | Cambio |
|---|---|---|
| partida | — | sin contrato |
| 04 | 0.1.0 | catálogos y productos: CRUD, subrecurso paginado y reglas 409 |
| 05 | 0.1.1 | constraints de validación |
| 06 | 0.2.0 | pedidos |
| 07 | — | sin cambio de contrato |
| 08 | 1.0.0 | registro y login; el pedido toma la identidad del token |
| 09 | — | sin cambio de contrato |
- Cada página de hito fija el alcance y los criterios de comprobación; el diseño y el código los decide el alumnado trabajando con la IA y la especificación. El hito termina cuando todos los criterios se cumplen.
- La entrega es el repositorio con sus tags; la revisión del hito se hace en clase sobre él.
Entorno
| Requisito | Nota |
|---|---|
| Docker + Compose | MariaDB desde la partida; más contenedores en hitos posteriores |
| JDK 25 | compilación, ejecución y pruebas |
| Spring Boot 4 | la versión del curso |
| Maven | el generador de OpenAPI y las herramientas se integran como plugins |
| Git | un tag por hito |
Después del hito 09
El diseño deja colocados los flujos que usarán los temas finales (detalles en requisitos):
- Tema 08 — eventos: la notificación de stock bajo al reservar y la factura al cancelar son operaciones auxiliares, fuera del flujo principal.
- Tema 09 — logs: correlación de peticiones con MDC, registro a fichero y Actuator.
- Tema 10 — Lambda: el informe de ventas del mes como función.
- Tema 11 — concurrencia: análisis del modelo de la tienda, sin cambios de código.