Skip to content

Repository files navigation

🅿️ Parking Manager API

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.

🏗️ Arquitectura (Clean Architecture)

El proyecto está estructurado en 4 capas principales para garantizar la separación de responsabilidades, testabilidad e independencia de frameworks:

  1. Domain Layer (src/domain/): Contiene la lógica central del negocio. Entidades, Enums e Interfaces. No depende de ninguna otra capa.
  2. 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.
  3. Services Layer (src/services/): Contiene los Managers que orquestan los casos de uso y la lógica de negocio. Dependen de las interfaces del dominio.
  4. Presentation Layer (src/presentation/): Capa externa que interactúa con el cliente. Contiene controladores, rutas de Express, Middlewares (Autenticación y Roles) y DTOs.

🚀 Tecnologías Principales

  • 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.

⚙️ Requisitos Previos

🛠️ Instalación y Ejecución Local

  1. Clonar el repositorio y entrar a la carpeta

    git clone https://github.com/michellviu/Parking-Manager-API
    cd Parking-Manager-API
  2. Instalar dependencias

    npm install
  3. Configurar variables de entorno Existe un archivo .env ya configurado para desarrollo local (puedes basarte en .env.example).

  4. Levantar las bases de datos con Docker Asegúrate de tener Docker corriendo e inicia PostgreSQL y MongoDB:

    docker-compose up -d
  5. Ejecutar la API en modo desarrollo

    npm run dev

    La API estará disponible en http://localhost:3000.

  6. (Opcional) Compilar para producción

    npm run build
    npm start

🧪 Ejecutar Pruebas E2E

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 test

📘 Documentación de la API

La 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

🔐 Autenticación y Roles

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>

📖 Colección de Postman

En la raíz del proyecto encontrarás el archivo Parking-Manager-API.postman_collection.json. Sigue estos pasos para usarlo:

  1. Abre Postman.
  2. Haz clic en Import.
  3. Selecciona el archivo Parking-Manager-API.postman_collection.json.
  4. Importa la colección en tu workspace.
  5. Asegúrate de que la API esté corriendo en http://localhost:3000.
  6. Ejecuta primero el request de login o registro para obtener el token JWT.
  7. Copia el token generado y agrégalo en el header Authorization con el formato Bearer <tu_token_jwt>.
  8. 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages