Esta es la implementación de la API para la gestión de un parking, desarrollada utilizando Node.js, TypeScript, Express y TypeORM, estructurada bajo los principios de Clean Architecture.
El proyecto está estructurado en 4 capas principales para garantizar la separación de responsabilidades, testabilidad e independencia de frameworks:
- Domain Layer (
src/domain/): Contiene la lógica central del negocio. Entidades, Enums e Interfaces. No depende de ninguna otra capa. - Infrastructure Layer (
src/infrastructure/): Implementaciones concretas de las interfaces del dominio. Aquí se encuentran las configuraciones de bases de datos (PostgreSQL y MongoDB), Modelos ORM/ODM y los Repositorios reales. - Services Layer (
src/services/): Contiene losManagersque orquestan los casos de uso y la lógica de negocio. Dependen de las interfaces del dominio. - Presentation Layer (
src/presentation/): Capa externa que interactúa con el cliente. Contiene controladores, rutas de Express, Middlewares (Autenticación y Roles) y DTOs.
- Runtime: Node.js + TypeScript
- Framework Web: Express.js
- Bases de Datos:
- PostgreSQL: Base de datos principal relacional para Entidades del negocio (TypeORM).
- MongoDB: Base de datos documental para almacenar Logs de actividad (Mongoose).
- Autenticación: JWT (JSON Web Tokens) y Bcrypt para hashing de contraseñas.
- Testing: Jest + Supertest (Pruebas E2E).
- Contenedores: Docker y Docker Compose.
-
Clonar el repositorio y entrar a la carpeta
git clone https://github.com/michellviu/Parking-Manager-API cd Parking-Manager-API -
Instalar dependencias
npm install
-
Configurar variables de entorno Existe un archivo
.envya configurado para desarrollo local (puedes basarte en.env.example). -
Levantar las bases de datos con Docker Asegúrate de tener Docker corriendo e inicia PostgreSQL y MongoDB:
docker-compose up -d
-
Ejecutar la API en modo desarrollo
npm run dev
La API estará disponible en
http://localhost:3000. -
(Opcional) Compilar para producción
npm run build npm start
Se han implementado pruebas E2E automatizadas para los 3 casos de uso principales. Para ejecutarlas asegúrate de que los contenedores de DB estén corriendo:
npm run testLa API está documentada con Swagger / OpenAPI. Puedes abrir la documentación interactiva en:
http://localhost:3000/api-docs
También está disponible el documento OpenAPI en formato JSON en:
http://localhost:3000/api-docs.json
La API utiliza un sistema de roles (admin, employee, client). Debes registrarte y hacer login para obtener un Bearer Token JWT. Para probar los endpoints protegidos, envía el token en el Header:
Authorization: Bearer <tu_token_jwt>
En la raíz del proyecto encontrarás el archivo Parking-Manager-API.postman_collection.json. Sigue estos pasos para usarlo:
- Abre Postman.
- Haz clic en Import.
- Selecciona el archivo
Parking-Manager-API.postman_collection.json. - Importa la colección en tu workspace.
- Asegúrate de que la API esté corriendo en
http://localhost:3000. - Ejecuta primero el request de login o registro para obtener el token JWT.
- Copia el token generado y agrégalo en el header
Authorizationcon el formatoBearer <tu_token_jwt>. - Ejecuta los demás requests de la colección según el flujo que quieras probar.
La colección incluye ejemplos para los flujos principales de la API, como autenticación, usuarios, vehículos, reservas, plazas de parqueo y logs.