Skip to content

schemifyjs/sfy-monorepo-nestjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nest Logo

Estado del proyecto: En desarrollo NestJS Kafka Bitnami gRPC Prisma ORM PostgreSQL Docker Ready Domain-Driven Design aplicado Arquitectura de Puertos y Adaptadores

📄 Descripción

Este microservicio forma parte del ecosistema de Schemify. Fue desarrollado con:

  • NestJS como framework base.
  • Arquitectura Hexagonal y Domain-Driven Design (DDD).
  • Comunicación sincrónica vía gRPC.
  • Comunicación asíncrona vía Apache Kafka (Bitnami).
  • Prisma ORM y PostgreSQL como capa de persistencia.
  • Pruebas end-to-end usando Jest.

⚙️ Instalación del Proyecto

$ npm install

⚡ Compilación y Ejecución

# Desarrollo
$ npm run start:dev

# Producción
$ npm run start:prod

🌍 Docker

Este microservicio está listo para ejecutarse en contenedores. Puedes usar docker-compose para levantar los servicios:

$ docker compose up --build

Asegúrate de configurar la red externa schemify-kafka-net si usas otros servicios conectados por Kafka.


🔧 Pruebas

# Unitarias
$ npm run test

# End-to-End
$ npm run test:e2e

🚧 Tecnologías Clave

  • gRPC: contratos definidos en .proto, compilados con ts-proto, y expuestos como servicios NestJS.
  • Kafka: Producers y Consumers implementados como servicios inyectables. Soporte para múltiples topics y grupos.
  • DDD / Hexagonal:
    • application/: DTOs, mappers, servicios y casos de uso.
    • domain/: entidades, value objects, interfaces de repositorios.
    • infrastructure/: controladores gRPC/Kafka, adapters de persistencia, módulos.

🔍 Exploración de mensajes Kafka

Puedes monitorear el flujo de mensajes en tiempo real usando:

  • Kafka UI (http://localhost:8081)
  • Comando CLI:
    docker exec -it kafka1 kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic example-created --from-beginning

👥 Autor y Contacto

Alejandro Díaz
Estudiante de Ingeniería Civil Informática, Universidad de Valparaíso


🔒 Licencia

Este proyecto está licenciado bajo la licencia MIT.


Schemify Microservice - Diseñado para ser simple, robusto y escalable. ✨