Backend REST API para la aplicación Coderic Pet Care, construido con NestJS y TypeScript.
| Capa | Tecnología |
|---|---|
| Framework | NestJS 11 + TypeScript |
| Base de datos | PostgreSQL 16 (TypeORM) |
| Caché / Sesiones | Redis 7 |
| Autenticación | JWT (access token + refresh token) |
| Documentación | Swagger / OpenAPI |
| Contenerización | Docker + Docker Compose |
| Gestor de paquetes | pnpm |
Copia .env.template y renómbralo según el entorno:
cp .env.template .env.development| Variable | Descripción | Ejemplo |
|---|---|---|
NODE_ENV |
Entorno de ejecución | development |
PORT |
Puerto del servidor | 4000 |
DB_HOST |
Host de PostgreSQL | localhost |
DB_PORT |
Puerto de PostgreSQL | 5432 |
DB_USERNAME |
Usuario de la base de datos | postgres |
DB_PASSWORD |
Contraseña de la base de datos | postgres |
DB_NAME |
Nombre de la base de datos | petcare_dev |
DB_SYNCHRONIZE |
Sincronizar esquema automáticamente | true |
REDIS_HOST |
Host de Redis | localhost |
REDIS_PORT |
Puerto de Redis | 6379 |
REDIS_PASSWORD |
Contraseña de Redis | redis_password |
BCRYPT_SALT_ROUNDS |
Rondas de hashing (4–31) | 10 |
JWT_SECRET |
Secreto para firmar JWT | change_this_secret |
JWT_EXPIRES_IN |
Duración del access token | 15m |
THROTTLE_TTL |
Ventana de rate limiting (ms) | 60000 |
THROTTLE_LIMIT |
Máximo de requests por ventana | 100 |
SESSION_TTL_WEB_MS |
TTL de sesión web (ms) | 86400000 (1 día) |
SESSION_TTL_MOBILE_MS |
TTL de sesión móvil (ms) | 2592000000 (30 días) |
Los siguientes comandos levanta la API junto a PostgreSQL y Redis:
# Primera vez o cuando cambien dependencias
make dev-build
# Iniciar servicios (sin rebuild)
make dev-up
# Detener servicios
make dev-down# Instalar dependencias
pnpm install
# Modo watch
pnpm start:dev
# Modo debug
pnpm start:debugpnpm build
pnpm start:prod# Tests unitarios
pnpm test
# Tests en modo watch
pnpm test:watch
# Tests e2e
pnpm test:e2e
# Cobertura
pnpm test:covUna vez iniciado el servidor, la documentación Swagger está disponible en:
http://localhost:{PORT}/api/docs
| Método | Ruta | Descripción | Autenticación |
|---|---|---|---|
POST |
/v1/auth/register |
Registrar nuevo usuario | Pública |
POST |
/v1/auth/login |
Iniciar sesión | Pública |
POST |
/v1/auth/refresh |
Renovar access token | Pública |
POST |
/v1/auth/logout |
Cerrar sesión | JWT requerido |
Todas las respuestas siguen la estructura:
{
"success": true,
"message": "Operación exitosa",
"data": { ... },
"timestamp": "2026-03-19T00:00:00.000Z",
"path": "/v1/auth/login"
}En caso de error:
{
"success": false,
"message": "Credenciales inválidas",
"timestamp": "2026-03-19T00:00:00.000Z",
"path": "/v1/auth/login"
}src/
├── auth/ # Módulo de autenticación (login, registro, sesiones)
├── user/ # Módulo de usuarios
├── common/ # Filtros, interceptores y DTOs compartidos
├── config/ # Configuración (env, DB, Redis, Swagger, throttle)
└── main.ts # Bootstrap de la aplicación
MIT © Coderic