Sistema de gestión de transporte y rutas construido con NestJS, Prisma ORM y PostgreSQL
EnrutApp Backend es una API RESTful robusta y escalable para la gestión integral de servicios de transporte. Proporciona funcionalidades completas para:
- 🔐 Autenticación y Autorización con JWT
- 👥 Gestión de Usuarios y roles (Admin, Conductor, Usuario)
- 🚍 Gestión de Vehículos y conductores
- 🗺️ Rutas y Ubicaciones
- 📦 Encomiendas y reservas
- 💰 Módulo Financiero
- ⏰ Control de Turnos
El proyecto sigue una arquitectura modular profesional basada en las mejores prácticas de NestJS y Clean Architecture.
- Node.js >= 18.x
- MySQL >= 8.0
- npm o yarn
# Clonar el repositorio
git clone https://github.com/EnrutApp/enrutapp-backend.git
cd enrutapp-backend
# Instalar dependencias
npm install
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tus credenciales de base de datos
# Ejecutar migraciones
npx prisma migrate dev
# Iniciar en modo desarrollo
npm run start:devLa API estará disponible en http://localhost:3000/api
📚 Documentación Swagger: http://localhost:3000/api/docs
- Abre http://localhost:3000/api/docs
- Ve a la sección "Auth"
- Haz clic en
POST /api/auth/login - Haz clic en "Try it out"
- Ingresa las credenciales:
{ "correo": "admin@enrutapp.com", "contrasena": "admin123" } - Copia el
access_tokende la respuesta - Haz clic en el botón "Authorize" 🔓 (arriba a la derecha)
- Pega el token y haz clic en "Authorize"
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"correo":"admin@enrutapp.com","contrasena":"admin123"}'# Tests unitarios
npm run test
# Tests e2e
npm run test:e2e
# Cobertura de tests
npm run test:cov
# Tests en modo watch
npm run test:watch| Script | Descripción |
|---|---|
npm run start |
Inicia la aplicación en modo producción |
npm run start:dev |
Inicia con hot-reload para desarrollo |
npm run start:debug |
Inicia en modo debug |
npm run build |
Compila el proyecto TypeScript |
npm run lint |
Ejecuta ESLint |
npm run format |
Formatea el código con Prettier |
npm run test |
Ejecuta tests unitarios |
npm run test:e2e |
Ejecuta tests end-to-end |
npm run prisma:studio |
Abre Prisma Studio (GUI de BD) |
- NestJS v11.0.10 - Framework backend progresivo
- TypeScript v5.9.3 - Tipado estático
- Node.js v24.10.0 - Runtime de JavaScript
- Prisma ORM v6.17.1 - ORM moderno para TypeScript
- MySQL v8.0+ - Base de datos relacional
- Passport JWT - Estrategia de autenticación
- bcryptjs - Hash de contraseñas
- class-validator - Validación de DTOs
- class-transformer - Transformación de datos
- Jest v30.2.0 - Framework de testing
- Supertest - Testing de endpoints HTTP
- ESLint v9.38.0 - Linter de código
- Prettier - Formateador de código
- TypeScript ESLint v8.46.1 - Reglas de TypeScript
Crea un archivo .env en la raíz del proyecto:
# Aplicación
NODE_ENV=development
PORT=3000
# Base de Datos
DATABASE_URL="mysql://usuario:contraseña@localhost:3306/enrutapp"
# JWT
JWT_SECRET="tu_secreto_super_seguro_aqui"
JWT_EXPIRES_IN="24hrs"
src/
├── main.ts # Punto de entrada de la aplicación
├── app.module.ts # Módulo raíz
│
├── common/ # 🔧 Código compartido
│ ├── decorators/ # Decoradores personalizados
│ ├── filters/ # Filtros de excepción
│ ├── guards/ # Guards globales
│ ├── interceptors/ # Interceptores
│ ├── interfaces/ # Interfaces compartidas
│ └── pipes/ # Pipes de validación
│
├── config/ # ⚙️ Configuración
│ ├── app.config.ts
│ ├── jwt.config.ts
│ └── database.config.ts
│
├── database/ # 🗄️ Base de datos
│ ├── database.module.ts
│ └── prisma.service.ts
│
└── modules/ # 📦 Módulos de negocio
├── auth/ # Autenticación
└── usuarios/ # Gestión de usuarios
feat: Nueva característica
fix: Corrección de bug
docs: Cambios en documentación
style: Cambios de formato (no afectan el código)
refactor: Refactorización de código
test: Añadir o modificar tests
chore: Cambios en build o herramientas
Esta es una guía rápida. Para más detalles, consulta CONTRIBUTING.md.
# 1. Crear branch
git checkout -b feature/nombre
# 2. Desarrollar y verificar
npm run lint:check
npm run test
# 3. Commit y push
git commit -m "feat: descripción"
git push origin feature/nombre
# 4. Crear PR en GitHubfeat: Nueva característica
fix: Corrección de bug
refactor: Refactorización
chore: Mantenimiento
docs: Documentación
test: Tests
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- EnrutApp Team - Desarrollo y mantenimiento
Hecho con ❤️ por el equipo de EnrutApp