Proyecto final
El proyecto final consiste en construir una API de gestion de pedidos aplicando Clean Architecture de forma pragmatica.
Objetivo
Crear un backend con usuarios, catalogo de productos, carrito, pedidos, pagos simulados, eventos de dominio y tests de dominio, aplicacion e integracion.
Estructura propuesta
txt
src/
modules/
orders/
domain/
application/
infrastructure/
presentation/
catalog/
identity/
shared/
kernel/
observability/Funcionalidades
- Crear carrito.
- Anadir productos.
- Confirmar pedido.
- Simular pago.
- Publicar evento
OrderConfirmed. - Consultar historial de pedidos.
- Cancelar pedido si aun no fue enviado.
Requisitos arquitectonicos
- El dominio no depende del framework.
- Los casos de uso no reciben objetos HTTP.
- Los repositorios se definen como puertos.
- La infraestructura implementa adaptadores concretos.
- Los errores se traducen en el borde de presentacion.
- Los eventos incluyen correlation id.
Tests minimos
- Confirmar pedido sin lineas falla.
- Confirmar pedido valido cambia estado.
- Cancelar pedido enviado falla.
- Crear pedido guarda entidad.
- El endpoint
POST /ordersejecuta el caso de uso correcto.
Entregable
El resultado debe poder explicarse con este diagrama:
txt
HTTP API
-> application use cases
-> domain model
-> ports
-> infrastructure adapters