Una base de API Multitenant robusta y escalable construida con NestJS, lista para ser reutilizada en múltiples proyectos.
- ✅ JWT Authentication - Access & Refresh tokens
- ✅ Registro de usuarios - Con validación de email
- ✅ Gestión de sesiones - Múltiples dispositivos
- ✅ Recuperación de contraseña - Via email
- ✅ Verificación de email - Cuentas seguras
- ✅ Tenant Isolation - Datos separados por inquilino
- ✅ Tenant Management - CRUD completo de inquilinos
- ✅ User-Tenant Relationship - Usuarios en múltiples tenants
- ✅ Rol-Based Access Control - Permisos por tenant
- ✅ Rate Limiting - Protección contra spam
- ✅ CORS Configuration - Orígenes permitidos
- ✅ Helmet - Headers de seguridad
- ✅ Password Hashing - Bcrypt seguro
- ✅ Input Validation - Sanitización de datos
- ✅ PostgreSQL - Base de datos relacional
- ✅ Prisma ORM - Type-safe database access
- ✅ Migrations - Control de versiones de BD
- ✅ Seeding - Datos iniciales
- ✅ Redis Cache - Caché de alta velocidad
- ✅ Connection Pooling - Optimización de conexiones
- ✅ Query Optimization - Consultas eficientes
- ✅ Pagination - Datos paginados
- ✅ Swagger UI - Documentación interactiva
- ✅ OpenAPI 3.0 - Especificación estándar
- ✅ Postman Collection - Colección de endpoints
- ✅ Docker Documentation - Guía de despliegue
- Node.js >= 18.0.0
- pnpm >= 8.0.0
- Docker >= 20.0.0
- Docker Compose >= 2.0.0
git clone <este-repo> mi-proyecto-api
cd mi-proyecto-apicp .env.example .env
# Edita .env con tus valores específicospnpm install# Desarrollo
pnpm run dev:up
# Producción
pnpm run docker:up- API: http://localhost:3001
- Swagger: http://localhost:3001/docs
- Prisma Studio: http://localhost:5555 (solo desarrollo)
# Instalar dependencias
pnpm install
# Configurar base de datos
pnpm run db:setup
# Iniciar en modo desarrollo
pnpm run start:dev# Iniciar todos los servicios
pnpm run dev:up
# Ver logs en tiempo real
pnpm run dev:logs
# Reiniciar API
pnpm run dev:restart# Tests unitarios
pnpm run test
# Tests de integración
pnpm run test:e2e
# Cobertura de tests
pnpm run test:cov
# Tests en modo watch
pnpm run test:watchpnpm run start:dev # Iniciar en modo desarrollo
pnpm run dev:up # Docker desarrollo
pnpm run dev:down # Parar Docker desarrollo
pnpm run dev:logs # Ver logs
pnpm run dev:clean # Limpiar completamentepnpm run db:setup # Configurar BD
pnpm run db:migrate # Ejecutar migraciones
pnpm run db:seed # Poblar con datos iniciales
pnpm run db:studio # Abrir Prisma Studiopnpm run build # Compilar para producción
pnpm run start:prod # Iniciar en producción
pnpm run docker:up # Docker producción
pnpm run docker:down # Parar Docker producción# Cambiar nombre del proyecto en package.json
{
"name": "mi-proyecto-api",
"description": "Mi API específica"
}# .env
DOCKER_PROJECT_NAME=mi_proyecto
POSTGRES_DB=mi_proyecto_dev
JWT_ACCESS_SECRET=tu-secreto-super-seguro
CORS_ORIGIN=https://mi-frontend.com// prisma/schema.prisma
// Añade tus modelos específicos aquísrc/
├── auth/ # Módulo de autenticación
├── users/ # Gestión de usuarios
├── tenants/ # Gestión de inquilinos
├── common/ # Utilidades compartidas
├── database/ # Configuración de BD
├── config/ # Configuración de la app
└── main.ts # Punto de entrada
prisma/
├── schema.prisma # Esquema de base de datos
├── migrations/ # Migraciones
└── seeds/ # Datos iniciales
docker/
├── Dockerfile # Imagen de producción
├── Dockerfile.dev # Imagen de desarrollo
└── docker-compose.* # Orquestación
POST /api/v1/auth/register- Registro de usuarioPOST /api/v1/auth/login- Inicio de sesiónPOST /api/v1/auth/refresh- Renovar tokenPOST /api/v1/auth/logout- Cerrar sesión
GET /api/v1/users/profile- Perfil del usuarioPUT /api/v1/users/profile- Actualizar perfilPOST /api/v1/users/change-password- Cambiar contraseña
GET /api/v1/tenants- Listar tenantsPOST /api/v1/tenants- Crear tenantGET /api/v1/tenants/:id- Obtener tenantPUT /api/v1/tenants/:id- Actualizar tenant
# Construcción optimizada
docker build -t mi-api .
# Ejecutar en producción
docker-compose up -d# Instalar PM2
npm install -g pm2
# Iniciar con PM2
pm2 start ecosystem.config.js- 🐳 Docker Guide - Guía completa de Docker
- 📊 Database Guide - Guía de base de datos
- 🔐 Auth Guide - Guía de autenticación
- 🏢 Multitenant Guide - Guía multitenant
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/amazing-feature) - Commit tus cambios (
git commit -m 'Add amazing feature') - Push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- 📧 Email: soporte@tu-empresa.com
- 💬 Discord: [Tu servidor de Discord]
- 📖 Documentación: [Tu documentación]
- 🐛 Issues: [GitHub Issues]
¡Construye APIs increíbles con esta base multitenant! 🚀