Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

🏋️‍♂️ Gym API – API Modular con NestJS + Arquitectura Limpia

Una API RESTful profesional para la gestión de gimnasios, construida con NestJS y estructurada bajo los principios de Clean Architecture y Domain-Driven Design (DDD).

Este proyecto está diseñado para ser escalable, testeable y mantenible, ideal para entornos productivos.


🔍 Objetivo del Proyecto

  • Ofrecer una arquitectura limpia aplicando las mejores prácticas del desarrollo backend moderno.
  • Proveer endpoints para gestionar clientes, entrenadores, productos y autenticación.
  • Servir como base para futuros desarrollos como membresías, pagos o reservas de clases.

🧠 Arquitectura del Proyecto

El sistema sigue una estructura hexagonal (puertos y adaptadores), separando responsabilidades en distintas capas:

Capa Responsabilidad principal
Domain Entidades del negocio y contratos (interfaces de repos)
Application Lógica de negocio / casos de uso (servicios de aplicación)
Infrastructure Conexión a BD, implementaciones concretas de repositorios
Presentation Controladores, DTOs, módulos, auth, decoradores

Esto permite un sistema desacoplado, fácil de testear y con inversión de dependencias clara.


📁 Estructura del Proyecto

src/
├── domain/ # Entidades y repositorios (interfaces)
├── application/ # Casos de uso (servicios de aplicación)
├── infrastructure/ # MongoDB schemas, repositorios, mappers
├── presentation/ # Controladores, DTOs, módulos, auth, guards
├── common/ # Pipes personalizados
├── api/ # Punto de entrada opcional para rutas
└── main.ts # Punto de entrada de la app
⚙️ Instalación y Ejecución
# 1. Clonar el repositorio
git clone https://github.com/ArleysGatica/gym-api
cd gym-api
# 2. Instalar dependencias
npm install
# 3. Configurar variables de entorno
cp .env.example .env
# Edita .env con tu URI de MongoDB, secret de JWT, etc.
# 4. Ejecutar en modo desarrollo
npm run start:dev
🔐 Seguridad y Autenticación
Autenticación con JWT (/auth/login)
Protección de rutas con JwtAuthGuard y RolesGuard
Decoradores personalizados @Public() y @Roles()
Validación de IDs de Mongo con ParseObjectIdPipe
📦 Configuración de Swagger
SwaggerModule.setup('api', app, document);
✨ Tecnologías Usadas
NestJS (TypeScript)
MongoDB + Mongoose
JWT Auth
JWT Auth + Swagger
Arquitectura Hexagonal

About

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /