Aplicación web para predecir la congestión del tráfico y recomendar la mejor ruta basada en datos históricos. El frontend está construido con Next.js y el backend proporciona una API REST.
Este documento proporciona todas las instrucciones necesarias para configurar, instalar y ejecutar el entorno de desarrollo localmente.
- Prerrequisitos
- Instalación
- Levantando el Entorno de Desarrollo
- Scripts Disponibles
- Estructura del Proyecto
- Endpoints de la API
- Contribuciones
Antes de comenzar, asegúrate de tener instalado git en tu sistema.
Sigue estos pasos para tener el entorno de desarrollo funcionando.
Primero, clona el repositorio en tu máquina local:
git clone https://github.com/tu-usuario/project_predict-traffic.git
cd project_predict-trafficEste proyecto utiliza Bun como runtime de JavaScript, gestor de paquetes y bundler.
Abre tu terminal y ejecuta el siguiente comando:
curl -fsSL https://bun.sh/install | bashDespués de la instalación, puede que necesites reiniciar tu terminal. Para verificar que se instaló correctamente, ejecuta:
bun --versionEl proyecto está organizado en dos carpetas principales: backend y frontend. Debes instalar las dependencias para ambas partes.
Navega a la carpeta del backend y usa bun para instalar los paquetes:
cd backend
bun installAhora, haz lo mismo para el frontend:
cd ../frontend
bun installEs probable que el proyecto necesite variables de entorno para funcionar (ej. URLs de la API). En las carpetas backend y/o frontend, busca archivos llamados .env.example.
Copia estos archivos a .env y rellena los valores necesarios.
Ejemplo para el frontend:
cd frontend
cp .env.example .envAbre el nuevo archivo frontend/.env y configura las variables, por ejemplo, la URL del backend:
# frontend/.env
NEXT_PUBLIC_API_URL=http://localhost:8000/apiSe recomienda usar dos terminales separadas, una para el backend y otra para el frontend.
En una terminal, navega a la carpeta del backend (asumiendo que es un proyecto Django/FastAPI) y ejecuta el servidor:
cd backend
# Ejemplo para Django/FastAPI, ajusta según tu proyecto
python manage.py runserverEsto iniciará el servidor de la API, generalmente en http://localhost:8000.
En una segunda terminal, navega a la carpeta del frontend y ejecuta su script de desarrollo:
cd frontend
bun run devEsto iniciará el servidor de desarrollo de Next.js. Podrás acceder a la aplicación en tu navegador en http://localhost:3000.
bun run dev: Inicia el servidor de desarrollo del frontend.bun run build: Genera la versión de producción de la aplicación.bun run start: Inicia un servidor de producción con la build generada.bun run lint: Ejecuta el linter para revisar la calidad del código.
.
├── backend/ # Contiene todo el código del servidor (API en Python)
├── frontend/ # Contiene todo el código de la aplicación cliente (Next.js)
│ ├── app/ # Código fuente del frontend
│ └── package.json # Dependencias y scripts del frontend
│
├── .gitignore # Archivos y carpetas ignorados por Git
└── README.md # Este archivo
Este endpoint predice la congestión del tráfico para un segmento específico en una fecha dada.
- URL:
/api/predict-traffic/ - Método:
GET - Parámetros de Consulta:
segmento_id(entero, requerido): El ID del segmento (1-10).fecha(string, opcional): La fecha para la predicción en formatoYYYY-MM-DD. Si no se proporciona, se usa la fecha actual.
- Ejemplo:
/api/predict-traffic/?segmento_id=1&fecha=2025-02-01 - Respuesta Exitosa:
- Código: 200 OK
- Contenido: Un objeto JSON con la predicción de tráfico para 24 horas.
Este endpoint recomienda la mejor ruta basándose en la predicción de tráfico para una fecha y hora dadas.
- URL:
/api/recommend-route/ - Método:
GET - Parámetros de Consulta:
fecha_hora(string, requerido): La fecha y hora para la recomendación en formatoYYYY-MM-DD HH:MM:SS.
- Ejemplo:
/api/recommend-route/?fecha_hora=2025-02-01%2008:00:00 - Respuesta Exitosa:
- Código: 200 OK
- Contenido: Un objeto JSON con la ruta recomendada.
Las contribuciones son bienvenidas. Si deseas colaborar, por favor sigue estos pasos:
- Haz un "Fork" del repositorio.
- Crea una nueva rama (
git checkout -b feature/nueva-funcionalidad). - Realiza tus cambios y haz "commit" (
git commit -m 'Añade nueva funcionalidad'). - Haz "Push" a tu rama (
git push origin feature/nueva-funcionalidad). - Abre un "Pull Request".