README.md
May 12, 2026 · View on GitHub
flAIghts
Planificador inteligente de vuelos optimizado mediante algoritmos de grafos e IA.
✈️ Sobre el Proyecto
flAIghts es una plataforma avanzada para la planificación de rutas aéreas que combina la potencia de algoritmos clásicos de optimización con datos en tiempo real. El sistema no solo busca vuelos, sino que diseña la trayectoria más eficiente (en coste o tiempo) permitiendo la inclusión de escalas intermedias obligatorias.
Características Principales
- 🔍 Búsqueda Inteligente: Encuentra rutas óptimas basadas en múltiples criterios.
- 🤖 IA Local: Integración con Ollama para el procesamiento inteligente de consultas mediante LLMs (Qwen 2.5).
- 🌐 Visualización 3D: Experiencia inmersiva con un globo terráqueo interactivo desarrollado en Three.js.
- 📍 Escalas Personalizadas: Soporte para paradas obligatorias durante el trayecto.
- ⚡ Optimización de Grafos: Implementación del algoritmo Dijkstra para garantizar la eficiencia y encontrar la ruta óptima en el grafo de vuelos.
- 💾 Caché Persistente: Uso de MongoDB para minimizar latencias y costes de API.
- 🌍 Datos Reales: Integración con SerpAPI (Google Flights).
🛠️ Stack Tecnológico
| Componente | Tecnología |
|---|---|
| Inteligencia Artificial | Ollama (Local LLMs), OpenAI SDK |
| Visualización 3D | Three.js (Globo interactivo) |
| Frontend | React 19, Vite, Tailwind CSS v4, GSAP, TanStack Query |
| Backend | Node.js 22, Express, TSOA, Mongoose, Zod |
| Base de Datos | MongoDB 8 |
| Infraestructura | Docker, Docker Compose, MinIO (S3), Mailpit |
| API Externa | SerpAPI (Google Flights) |
🚀 Guía de Inicio Rápido
Prerrequisitos
- Node.js (v18 o superior)
- Docker & Docker Compose
- Una API Key de SerpAPI
Configuración del Entorno
-
Clona el repositorio:
git clone https://github.com/tu-usuario/flAIghts.git cd flAIghts -
Configura las variables de entorno: Crea un archivo
.enven la raíz del proyecto.Obligatorio:
SERPAPI_API_KEY=tu_api_key_aqui # Necesaria para obtener precios de vuelos realesOpcional (para habilitar Google Login):
VITE_GOOGLE_CLIENT_ID=tu_google_client_id GOOGLE_CLIENT_ID=tu_google_client_id
Nota: El servidor está diseñado para ser interactivo; si falta alguna variable de entorno crítica durante el inicio, se solicitará automáticamente a través de la terminal.
Instalación y Despliegue con Docker
Este proyecto está completamente dockerizado, lo que facilita enormemente su despliegue:
-
Levantar el proyecto: Desde la raíz, ejecuta el siguiente comando para construir e iniciar todos los servicios (Base de datos, Backend, Frontend y utilidades):
docker compose up -d -
Ejecutar migraciones: Una vez que los contenedores estén en marcha, debes poblar la base de datos con la información de aeropuertos y aerolíneas:
# Migración de aeropuertos docker compose exec server npx tsx scripts/migrations/airportsMigration.ts # Migración de aerolíneas docker compose exec server npx tsx scripts/migrations/airlinesMigration.ts
🌐 Acceso a los Servicios
| Servicio | URL | Credenciales (Dev) |
|---|---|---|
| Frontend | http://localhost:5173 | - |
| Backend API | http://localhost:3000 | - |
| Mailpit (Simulador de Email) | http://localhost:8025 | - |
| MinIO (Almacenamiento S3) | http://localhost:9001 | admin / admin123 |
🗄️ Administración de la Base de Datos
Para explorar y manipular los datos de desarrollo, puedes utilizar herramientas como MongoDB Compass.
Conexión local
Utiliza la siguiente URI para conectarte a la instancia de MongoDB en Docker:
mongodb://root:1234@localhost:27017/flAIghts?authSource=admin
Gestión de Roles (Superadmin)
Por razones de seguridad, no existe un registro directo para administradores. Si necesitas que un usuario tenga privilegios de superadmin (para acceder al panel de administración y ver métricas avanzadas), sigue estos pasos:
- Regístrate normalmente desde la aplicación frontend.
- Abre la base de datos con Compass u otra herramienta.
- Busca el documento del usuario en la colección
usersde la base de datosflAIghts. - Cambia manualmente el valor del campo
rolede"user"a"superadmin".
🏗️ Consideraciones de Producción
El archivo docker-compose.yaml incluido está optimizado exclusivamente para entornos de desarrollo. Para un despliegue en producción, ten en cuenta lo siguiente:
- Imágenes Docker: Puedes utilizar las imágenes generadas por el proyecto, pero asegúrate de usar los archivos
Dockerfilede producción (si existen) o configurar adecuadamente los comandos de inicio en tu orquestador. - Variables de Entorno: Es crítico configurar correctamente las variables de entorno de producción (como
NODE_ENV=production,MONGODB_URIa una instancia segura, secretos de JWT fuertes, etc.). - Persistencia y Seguridad: No utilices las credenciales por defecto de MongoDB o MinIO en producción. Se recomienda usar servicios gestionados para la base de datos y el almacenamiento de objetos.
- Escalabilidad: Considera el uso de un orquestador como Kubernetes o servicios de nube tipo PaaS para gestionar el escalado y la disponibilidad de los servicios.
📊 Analytics y Reportes
El proyecto incluye herramientas avanzadas de análisis de usabilidad, con capacidad para exportar reportes en HTML y visualizaciones de datos (SUS, KDE distributions) para evaluar la experiencia del usuario.
- Modo Evaluación: Por defecto, el modo evaluación está activado en el entorno de desarrollo para facilitar las pruebas del TFG.
- Configuración: Puedes desactivarlo cambiando la variable de entorno
VITE_EVALUATION_MODEafalseen tu archivo.env.
📄 Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Desarrollado con ❤️ para el TFG de Ingeniería Informática en la Universidad Complutense de Madrid.