Microservicio principal (Backend) de la plataforma MesaYA, construido con NestJS. Maneja toda la lógica de negocio relacionada con restaurantes, reservas, menús, mesas y secciones.
Este es el backend central de MesaYA que proporciona:
- Gestión de restaurantes: Crear, editar, listar restaurantes
- Sistema de reservas: Crear, modificar, cancelar reservas
- Gestión de mesas: Configurar mesas y su disponibilidad
- Secciones del restaurante: Organizar el layout del local
- Menús digitales: Gestión de platillos y categorías
- Reseñas y calificaciones: Sistema de reviews de clientes
- Arquitectura limpia (Clean Architecture) con separación de capas
- Comunicación event-driven con Kafka
- API REST documentada con Swagger
src/
├── domain/ # Entidades y lógica de negocio
├── application/ # Casos de uso
├── infrastructure/ # Implementaciones (DB, Kafka, etc.)
└── interfaces/ # Controladores y DTOs
- Cliente: Puede buscar restaurantes, hacer reservas y dejar reseñas
- Dueño de Restaurante: Puede gestionar su restaurante, mesas, menú y ver reservas
- Administrador: Acceso completo a todas las funcionalidades del sistema
- Node.js 18+
- npm o pnpm
- PostgreSQL
- Kafka (debe estar corriendo)
# Instalar dependencias
npm installCrear un archivo .env con las siguientes variables:
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/mesaya
# Server
PORT=3000
# JWT (para validación de tokens)
JWT_SECRET=tu_secreto_jwt
# Kafka
KAFKA_BROKERS=localhost:9092
# External Services
AUTH_SERVICE_URL=http://localhost:3001# Modo desarrollo
npm run start:dev
# Modo producción
npm run build
npm run start:prod
# Con Docker
docker compose up -dLa API está documentada con Swagger. Una vez iniciado el servidor, accede a:
http://localhost:3000/api
GET /restaurants- Listar todos los restaurantesGET /restaurants/:id- Obtener un restaurante específicoPOST /restaurants- Crear restaurante (solo dueños)PUT /restaurants/:id- Actualizar restauranteDELETE /restaurants/:id- Eliminar restaurante
GET /reservations- Listar reservasPOST /reservations- Crear nueva reservaPUT /reservations/:id- Actualizar reservaDELETE /reservations/:id- Cancelar reserva
GET /tables- Listar mesas del restaurantePOST /tables- Crear mesaPUT /tables/:id- Actualizar mesaDELETE /tables/:id- Eliminar mesa
GET /menus- Listar menúsPOST /menus- Crear menú/platilloPUT /menus/:id- Actualizar menúDELETE /menus/:id- Eliminar menú
# Unit tests
npm run test
# E2E tests
npm run test:e2e
# Test coverage
npm run test:cov- NestJS - Framework backend
- TypeScript - Lenguaje de programación
- TypeORM - ORM para PostgreSQL
- Swagger/OpenAPI - Documentación de API
- KafkaJS - Cliente de Kafka para eventos
- Class Validator - Validación de DTOs
- Passport - Autenticación (integración con Auth MS)
Para más detalles sobre la arquitectura y funcionamiento del sistema completo, consulta la documentación principal.
Este proyecto es parte de MesaYA y está desarrollado por estudiantes de ULEAM.