Skip to content

salvador-gisbert/DataProject1

Repository files navigation

DataProject1

🌬️ Lungium: Inteligencia Ambiental Accionable

Data Project - Máster en Big Data & Cloud (EDEM) Equipo 2: Rafael Morata, Germán Devís, Salvador Gisbert, Noelia Andrade.

📖 Descripción

Lungium es una plataforma de monitorización y predicción de calidad del aire en tiempo real. Utiliza una arquitectura orientada a eventos para ingerir datos abiertos, procesarlos y generar alertas predictivas (a 1 hora vista) mediante un microservicio de Inteligencia Artificial.

El proyecto se basa en datos Open Data del Ayuntamiento de València y utiliza una estrategia ELT (Extract, Load, Transform) con almacenamiento Schema-on-Read para garantizar la resiliencia y escalabilidad.


🚀 Instalación y Despliegue Rápido

Prerrequisitos

  • Docker y Docker Compose instalados.
  • Git.

Pasos para arrancar

  1. Clonar el repositorio y entrar en la carpeta:

    git clone <https://github.com/salvador-gisbert/DataProject1.git>
    cd DATAPROJECT1
  2. Levantar el entorno:

    docker-compose up --build

    Espera unos segundos hasta que todos los contenedores estén "healthy".


🖥️ Acceso a los Servicios y Configuración

Una vez levantado el Docker, puedes acceder a las diferentes interfaces en tu navegador:

1. 📊 Grafana (Monitorización Técnica)

  • URL: http://localhost:3000
  • Usuario/Contraseña: admin / admin123 (si te pide cambiarla, puedes saltar el paso o poner una nueva).

⚠️ PASOS OBLIGATORIOS PARA VER DATOS: Para visualizar correctamente los gráficos, sigue estos pasos la primera vez que entres:

  1. Ve al menú de Configuration (o Connections) -> Data Sources.
  2. Selecciona PostgreSQL.
  3. Baja hasta el final de la página (scroll down).
  4. Pulsa el botón "Save & Test" (debe salir un tick verde indicando conexión exitosa).
  5. Ve a la sección Dashboards y abre el dashboard principal ("Dashboard Aire" o similar).
  6. IMPORTANTE: En la esquina superior derecha, cambia el rango de tiempo a "Last 6 hours" (o "Last 12 hours") para ver los datos recién ingestados.

2. 🌍 Dashboard Ciudadano (Plotly/Streamlit)

  • URL: http://localhost:8501
  • Aquí verás la interfaz visual para el usuario final con los mapas interactivos y las alertas de contaminación en tiempo real.

3. 🔌 API de Datos (JSON)


🏗️ Arquitectura Técnica

El sistema sigue una arquitectura de microservicios desacoplada:

  1. Ingesta Robusta: Un Producer consulta la API OpenData de Valencia con lógica de reintentos (Backoff strategy).
  2. Bus de Eventos (Kafka): Núcleo del sistema que garantiza persistencia.
  3. Procesamiento:
    • Consumer DB: Guarda el dato crudo (JSONB) en PostgreSQL.
    • ML Worker: Genera predicciones y las escribe en DB.
  4. Almacenamiento: PostgreSQL 15 utilizando Vistas SQL para la capa de servicio.

📂 Estructura del Proyecto

DataProject1/
├── dashboard/              # Código del Frontend (Streamlit/Plotly)
├── grafana_config/         # Provisioning de Dashboards y Datasources
├── init-db/                # Scripts SQL (Tablas y Vistas)
├── api_db.py               # API Gateway (FastAPI)
├── consumer_to_db.py       # Consumer Kafka
├── ingesta_producer.py     # Producer Kafka (Ingesta OpenData)
├── ml_worker.py            # Worker IA: Genera predicciones
├── docker-compose.yml      # Orquestación de contenedores
└── requirements.txt        # Dependencias Python

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors