Repositorio público
Order Lifecycle
Software Engineer
Plataforma backend de microservicios orientada a eventos. NestJS, NX, Redis + BullMQ y PostgreSQL. Solo el API Gateway expone puertos.
Contexto
Order Lifecycle Platform es un backend de microservicios en un monorepo NX. El objetivo del repo es mostrar un ciclo de vida de orden con arquitectura orientada a eventos: NestJS, Redis + BullMQ y PostgreSQL.
Problema
Hace falta un punto de entrada único autenticado y servicios que reaccionen a una orden sin acoplarse por HTTP: inventario y pago deben procesar el mismo evento, y la orden solo se confirma si ambos responden bien.
Decisiones
Lo que el README y el código documentan como elegido:
- Un API Gateway como único puerto al exterior. Valida JWT y reenvía a auth-service y order-service.
- Comunicación interna por eventos en colas BullMQ (
order,inventory,payment,notification) sobre Redis compartido. - Contratos de eventos en la librería
event-contracts(OrderCreated,InventoryReserved/InventoryReservationFailed,PaymentCompleted/PaymentFailed,OrderConfirmed/OrderCancelled). - PostgreSQL por servicio:
auth_db(usuarios) yorder_db(órdenes). - Autenticación email + password con JWT firmado. El README anota que no hay OAuth ni refresh tokens por ahora.
Arquitectura
Flujo documentado:
- El usuario crea una orden con
POST /ordersy JWT. order-serviceguarda la orden en estadoPENDINGy emiteOrderCreated.inventory-serviceypayment-serviceescuchanOrderCreatedy emiten reserva/pago ok o fallo.order-servicedecide: ambos ok →OrderConfirmed; alguno falla →OrderCancelled.notification-serviceescucha confirmación o cancelación.
También existen POST /auth/register, POST /auth/login, GET /orders/:id y POST /orders/:id/cancel (no se puede cancelar una orden ya confirmada). El stack es Node.js, TypeScript, NestJS, NX, Redis + BullMQ, PostgreSQL y Docker Compose.