OrderFlow
Autorjun 2026
Backend de gestion de pedidos como portfolio tecnico senior. Arquitectura hexagonal (puertos y adaptadores), DDD tactico, API REST segura con JWT, outbox transaccional, cache, resiliencia (Resilience4j) y observabilidad (Prometheus/OpenAPI). Build Maven multi-modulo y despliegue con Docker.
Sobre el proyecto
Proyecto de portfolio tecnico que evidencia criterio senior en Java: pequeno en superficie pero deliberado en cada decision. Backend de gestion de pedidos con arquitectura hexagonal donde el dominio no depende de ningun framework, modelado de dominio rico (DDD tactico) con el agregado Order custodiando todas las invariantes, y Java 21 moderno (records, sealed interfaces, switch exhaustivo, Clock inyectado). Incluye seguridad JWT stateless, outbox transaccional con entrega al menos una vez, resiliencia con Resilience4j y observabilidad con Actuator/Prometheus y OpenAPI/Swagger.
Características
- Arquitectura hexagonal: el dominio define los puertos (p. ej. OrderRepository) y la infraestructura los implementa; las dependencias apuntan siempre hacia dentro
- DDD tactico: Order como aggregate root que protege sus invariantes; IDs tipados (OrderId, CustomerId) que evitan la primitive obsession
- Dinero como value object Money con BigDecimal, control de divisa y redondeo bancario (nunca double)
- API REST con JWT stateless (emision y validacion), roles mapeados a authorities y rutas publicas minimas
- Outbox transaccional + relay con entrega al menos una vez; el broker queda aislado como detalle
- Resiliencia con Resilience4j (retry y circuit breaker) y bloqueo optimista con @Version
- Observabilidad (Actuator/Prometheus, OpenAPI/Swagger), build Maven multi-modulo, Docker y tests con JUnit 5, AssertJ y Testcontainers
