Skip to content

MeliUlloa/microservicio-its

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto Evaluativo: Microservicios con NestJS

Este proyecto es la implementación final del trabajo evaluativo “Cierre Microservicios”, desarrollado con arquitectura basada en microservicios usando NestJS.


👤 Integrantes

Maia Aedo – @Maia-Aedo – aedomaia10@gmail.com
Melina Ulloa – @MeliUlloa – melinaulloa98@gmail.com

Requisitos cumplidos

  1. Estructura modular basada en microservicios:
    Se dividió el proyecto en varios microservicios independientes y un gateway que funciona como punto de entrada y orquestador.

  2. Autenticación con JWT, Passport y Guards desde el Gateway:
    La validación del usuario se realiza en el gateway mediante el método validate que consulta al microservicio de usuarios vía ClientProxy. El token JWT se genera y verifica en el gateway.

  3. 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.

  4. 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 y Reserva (o PreOrder).
    • Antes de agregar un producto al carrito, se verifica que haya stock suficiente sin modificarlo hasta la compra.
  5. 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.

  6. Buenas prácticas:
    Se aplicaron principios SOLID, separación de responsabilidades, DTOs para validación, manejo correcto de excepciones con RpcException, uso de constantes para patrones de mensajes, y código limpio y modular.

  7. Documentación con Swagger:
    El gateway cuenta con documentación automática Swagger para los endpoints REST.

  8. Funcionalidad extra - limpieza automática de carritos:
    Se implementó un job con la librería node-cron para limpiar carritos con reservas de más de 3 días y evitar bloqueos prolongados de stock.


Estructura del proyecto

  • 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.

Tecnologías y librerías principales

  • NestJS
  • TypeScript
  • JWT, Passport, Guards (Autenticación)
  • Prisma ORM (usuarios)
  • TypeORM (productos y facturas)
  • node-cron (tareas programadas)
  • Swagger (documentación)
  • Docker

Instalación y ejecución

  1. Clonar el repositorio y entrar al proyecto
git clone https://github.com/tu-usuario/tu-repo-microservicios.git
cd tu-repo-microservicios
  1. 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
  1. Configurar variables de entorno en cada microservicio y gateway (.env)

  2. 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  

Uso general

  • 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.


Documentación Swagger

El gateway expone la documentación en:
http://localhost:3000/api

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •