API REST para la aplicación My Training — gestión de rutinas de entrenamiento, dieta, cardio y usuarios. Construida con NestJS + MongoDB Atlas.
- Node.js v20 o superior
- pnpm (gestor de paquetes)
- Cuenta en MongoDB Atlas con un cluster creado
Instalar pnpm si no lo tienes:
npm install -g pnpm# Clonar el repositorio
git clone <url-del-repo>
cd api-my-training
# Instalar dependencias
pnpm installCrea un archivo .env en la raíz del proyecto (cópialo de .env.example):
cp .env.example .envRellena los valores en .env:
MONGODB_URI=mongodb+srv://<usuario>:<password>@<cluster>.mongodb.net/my-training
JWT_SECRET=tu_clave_secreta_muy_larga
FRONTEND_URL=http://localhost:4200
PORT=3000
⚠️ Nunca subas el.enva GitHub. Está en.gitignore.
# Modo desarrollo (con hot-reload)
pnpm run start:dev
# La API estará disponible en:
# http://localhost:3000/my-training/v1# Compilar para producción
pnpm run build
# Arrancar en producción (requiere build previo)
pnpm run start:prod
# Linter
pnpm run lint
# Tests
pnpm run test- Sube el repositorio a GitHub
- En Railway → New Project → Deploy from GitHub repo
- Selecciona este repositorio
- En Variables añade:
MONGODB_URIJWT_SECRETFRONTEND_URL(URL de Vercel cuando la tengas)
- Railway detecta automáticamente NestJS y ejecuta
pnpm run build+pnpm run start:prod
# Construir la imagen
docker build -t api-my-training .
# Ejecutar el contenedor
docker run -p 3000:3000 \
-e MONGODB_URI="tu_connection_string" \
-e JWT_SECRET="tu_clave_secreta" \
-e FRONTEND_URL="http://localhost:4200" \
api-my-trainingO con Docker Compose:
docker compose up --buildsrc/
├── auth/ # Módulo de autenticación (JWT + Passport)
├── users/ # Gestión de usuarios y perfiles
├── routines/ # Rutinas de entrenamiento
├── exercises/ # Biblioteca de ejercicios
├── diets/ # Dietas y alimentos
├── foods/ # Catálogo de alimentos
├── cardio/ # Configuraciones de cardio
└── common/ # Interceptores, pipes y utilidades compartidas
- NestJS v11
- MongoDB + Mongoose
- Passport JWT — autenticación
- class-validator — validación de DTOs
- bcrypt — hash de contraseñas