Skip to content

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

  1. Crear carrito.
  2. Anadir productos.
  3. Confirmar pedido.
  4. Simular pago.
  5. Publicar evento OrderConfirmed.
  6. Consultar historial de pedidos.
  7. 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 /orders ejecuta 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