Skip to content

JavierLQR/codescript-interview-challenge

Repository files navigation

🚗 Vehicles API - Listado de Fabricantes

Este módulo permite obtener una lista paginada de fabricantes de vehículos desde una API externa del gobierno de Estados Unidos (NHTSA).
Los datos son procesados, transformados y devueltos en un formato unificado para su consumo por el frontend o integradores externos.


🌐 Endpoint disponible

GET /api/v1/vehicles?page=1

Versión: v1
Ruta base local: http://localhost:4000/api/v1/vehicles


🔧 Parámetros

Nombre Tipo Requerido Descripción
page number ✅ Sí Número de página para paginar.

📥 Ejemplo de Request

GET http://localhost:4000/api/v1/vehicles?page=1

📤 Ejemplo de Response (HTTP 200)

{
  "message": "Vehicles found successfully",
  "data": [
    {
      "id_manufactureer": 955,
      "country": "UNITED STATES (USA)",
      "legal_name": "TESLA, INC.",
      "name": "Tesla",
      "vehicle_types": [
        {
          "is_primary": true,
          "name": "Passenger Car"
        },
        {
          "is_primary": false,
          "name": "Truck"
        }
      ]
    }
  ],
  "statusCode": 200,
  "service": "VehiclesService"
}

⚠️ Posibles Errores

Código Descripción
404 No vehicles found (cuando la respuesta viene vacía).
500 Error al comunicarse con la API externa o error interno.

🔄 Fuente de datos externa

Este servicio consume información pública desde la API de:

NHTSA - National Highway Traffic Safety Administration
https://vpic.nhtsa.dot.gov/api/vehicles/GetAllManufacturers?page=X&format=json


🔌 Instalación del proyecto

# 1. Clonar el repositorio
git clone <tu-repo>.git
cd <tu-repo>

# 2. Instalar dependencias
npm install

# 3. Crear archivo de entorno
cp .env.example .env

# 4. Configurar URL externa
# En .env
URL_VEHICLES_API=https://vpic.nhtsa.dot.gov/api/vehicles/GetAllManufacturers?format=json

# 5. Ejecutar el proyecto en desarrollo
npm run start:dev

🧪 Probar en local

Una vez ejecutado, puedes probar el endpoint en:

http://localhost:4000/api/v1/vehicles?page=1

También disponible en Swagger UI:

http://localhost:4000/api

🛠️ Tecnologías usadas

  • Node.js + NestJS como framework backend.
  • RxJS con lastValueFrom para el manejo de observables de Axios.
  • Swagger para la documentación interactiva (@nestjs/swagger).
  • Axios como cliente HTTP (@nestjs/axios).
  • ConfigModule para manejar configuraciones externas y variables de entorno.
  • Class-validator para validación de DTOs.
  • Custom Mapper para transformar la data de la API externa.
  • Logger Service para trazabilidad de errores.

📦 Estructura relacionada

📁 src/
 └── 📁 modules/
      └── 📁 vehicles/
           ├── controllers/
           ├── services/
           ├── dto/
           ├── mapper/
           ├── types/
           └── vehicles.module.ts

👨‍💻 Autor

Javier Rojas
Desarrollador Backend con NestJS — 2025
Contacto: LinkedIn

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published