Este proyecto es la implementación final del trabajo evaluativo “Cierre Microservicios”, desarrollado con arquitectura basada en microservicios usando NestJS.
Maia Aedo – @Maia-Aedo – aedomaia10@gmail.com
Melina Ulloa – @MeliUlloa – melinaulloa98@gmail.com
-
Estructura modular basada en microservicios:
Se dividió el proyecto en varios microservicios independientes y un gateway que funciona como punto de entrada y orquestador. -
Autenticación con JWT, Passport y Guards desde el Gateway:
La validación del usuario se realiza en el gateway mediante el métodovalidate
que consulta al microservicio de usuarios víaClientProxy
. El token JWT se genera y verifica en el gateway. -
Comunicación entre microservicio de facturas y usuarios para información de propietario:
El microservicio de facturas obtiene las facturas y, para la información de usuarios relacionada, el gateway se encarga de vincular las facturas con los datos del usuario correspondiente, consultando al microservicio de usuarios. -
Manejo de stock y carrito:
- El stock se actualiza únicamente cuando se confirma una compra (en el microservicio de productos).
- El carrito de usuario y la reserva de productos se manejan en el microservicio de usuarios, con tablas relacionadas para
Carrito
yReserva
(oPreOrder
). - Antes de agregar un producto al carrito, se verifica que haya stock suficiente sin modificarlo hasta la compra.
-
CRUD sencillo:
Los endpoints permiten crear, consultar (uno o varios), y modificar. No se implementa eliminación física para mantener la integridad de datos. -
Buenas prácticas:
Se aplicaron principios SOLID, separación de responsabilidades, DTOs para validación, manejo correcto de excepciones conRpcException
, uso de constantes para patrones de mensajes, y código limpio y modular. -
Documentación con Swagger:
El gateway cuenta con documentación automática Swagger para los endpoints REST. -
Funcionalidad extra - limpieza automática de carritos:
Se implementó un job con la libreríanode-cron
para limpiar carritos con reservas de más de 3 días y evitar bloqueos prolongados de stock.
its-gateway/
- Gateway REST que expone la API, gestiona autenticación y orquesta llamadas a microservicios.its-users/
- Microservicio que gestiona usuarios, autenticación, carritos y reservas.its-products/
- Microservicio que maneja productos, stock y compras.its-facturas/
- Microservicio encargado de facturas y pagos.common/
- DTOs, interfaces y constantes compartidas.
- NestJS
- TypeScript
- JWT, Passport, Guards (Autenticación)
- Prisma ORM (usuarios)
- TypeORM (productos y facturas)
- node-cron (tareas programadas)
- Swagger (documentación)
- Docker
- Clonar el repositorio y entrar al proyecto
git clone https://github.com/tu-usuario/tu-repo-microservicios.git
cd tu-repo-microservicios
- Instalar dependencias en cada carpeta
cd its-gateway && npm install
cd ../its-users && npm install
cd ../its-products && npm install
cd ../its-invoices && npm install
-
Configurar variables de entorno en cada microservicio y gateway (.env)
-
Levantar los servicios en terminales separadas:
cd its-users && npm run start:dev
cd ../its-products && npm run start:dev
cd ../its-invoices && npm run start:dev
cd ../its-gateway && npm run start:dev
-
Consumir endpoints REST en el gateway (documentados en Swagger).
-
Autenticarse vía /auth/login para obtener JWT.
-
Realizar operaciones según rol (usuario o administrador).
-
El gateway orquesta la comunicación con microservicios para brindar respuestas completas.
El gateway expone la documentación en:
http://localhost:3000/api