Skip to content

ParadojaDevs/ClimaGuru

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌦️ ClimaGuru

Sistema integrado de consulta y anΓ‘lisis de datos climΓ‘ticos desde mΓΊltiples fuentes meteorolΓ³gicas.

πŸ“‹ DescripciΓ³n

ClimaGuru (CLIMAPI) es una plataforma que recopila, procesa y analiza datos meteorolΓ³gicos desde diversas APIs especializadas, proporcionando informaciΓ³n completa sobre:

  • β›… PronΓ³sticos meteorolΓ³gicos
  • 🌑️ Datos climΓ‘ticos actuales e histΓ³ricos
  • πŸ’¨ Calidad del aire
  • πŸ“‘ ImΓ‘genes de radares meteorolΓ³gicos
  • πŸ“Š AnΓ‘lisis y visualizaciones de datos

🎯 Estado del Proyecto

Estado: βœ… Funcional y en desarrollo activo

APIs Integradas:

  • βœ… Meteoblue - PronΓ³sticos detallados y meteogramas
  • βœ… Open-Meteo - PronΓ³sticos gratuitos y datos histΓ³ricos
  • βœ… OpenWeatherMap - Clima actual, pronΓ³stico 5 dΓ­as y calidad del aire
  • βœ… Meteosource - Datos meteorolΓ³gicos completos
  • βœ… IDEAM - Radares meteorolΓ³gicos de Colombia (AWS pΓΊblico)
  • βœ… SIATA - Datos histΓ³ricos de MedellΓ­n y regiΓ³n

✨ Características

  • πŸ”„ Consulta unificada de mΓΊltiples fuentes meteorolΓ³gicas
  • πŸ“ Soporte para ubicaciones personalizadas (coordenadas GPS)
  • πŸ’Ύ Almacenamiento automΓ‘tico de datos en formatos JSON y CSV
  • πŸ“Š Procesamiento y anΓ‘lisis de datos de radar
  • πŸ–ΌοΈ Descarga de meteogramas e imΓ‘genes de radar
  • πŸ—‚οΈ Estructura organizada de datos por fuente
  • πŸ“‘ Descarga de datos histΓ³ricos SIATA
  • 🎯 MenΓΊ interactivo para consultas rΓ‘pidas

πŸ”§ Requisitos Previos

  • Python 3.10 o superior
  • Node.js 20 o superior
  • pip (gestor de paquetes de Python)
  • Corepack habilitado (para usar pnpm)
  • ConexiΓ³n a Internet
  • Claves API (para servicios que las requieren)

πŸ“¦ InstalaciΓ³n

1. Clonar el repositorio

git clone https://github.com/xtatikmel/ClimaGuru.git
cd ClimaGuru

2. Crear entorno virtual

En Windows:

python -m venv .venv
.venv\Scripts\activate

En Linux/Mac:

python3 -m venv .venv
source .venv/bin/activate

3. Instalar dependencias de Python (raΓ­z)

pip install -r requirements.txt

πŸ”Œ Backend (Flask + MySQL)

El backend vive en backend/ y usa Flask + SQLAlchemy.

1) Configurar variables de entorno

  • Copia .env.example a .env dentro de backend/.
  • Ajusta los datos de la base de datos (VM MySQL):
DB_HOST=100.78.215.44
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root
DB_NAME=climaguru

2) Instalar dependencias del backend

cd backend
pip install -r requirements.txt

3) Ejecutar el backend

python app.py

El backend quedarΓ‘ disponible en http://localhost:5000.

4) Probar con Postman

Endpoints base:

  • GET /health
  • POST /api/auth/registro
  • POST /api/auth/login
  • GET /api/auth/me

DocumentaciΓ³n ampliada en backend/docs/API.md.

πŸ’» Frontend (Next.js)

El frontend vive en frontend/ y usa Next.js con pnpm.

1) Instalar dependencias del frontend

Si pnpm no estΓ‘ en PATH, usa Corepack:

corepack pnpm install

o, si ya tienes pnpm global:

pnpm install

2) Configurar URL del backend

Crear frontend/.env.local con:

NEXT_PUBLIC_API_URL=http://localhost:5000/api

Para despliegue en servidor, cambia localhost por el dominio o IP pΓΊblica del backend.

3) Ejecutar frontend

cd frontend
corepack pnpm dev

4) Build de producciΓ³n

cd frontend
corepack pnpm build
corepack pnpm start

βš™οΈ ConfiguraciΓ³n

1. Crear archivo de variables de entorno

Crear un archivo .env en la raΓ­z del proyecto con las siguientes claves API:

# Meteoblue (Opcional - requiere registro)
METEOBLUE_API_KEY=tu_api_key_aqui
METEOBLUE_SHARED_SECRET=tu_shared_secret_aqui

# OpenWeatherMap (Opcional - requiere registro)
OPENWEATHER_API_KEY=tu_api_key_aqui

# Meteosource (Opcional - requiere registro)
METEOSOURCE_API_KEY=tu_api_key_aqui

# Open-Meteo (Gratuito - No requiere API key)
# IDEAM (PΓΊblico - No requiere credenciales)
# SIATA (PΓΊblico - No requiere credenciales)

2. Obtener claves API

Las APIs que requieren registro ofrecen planes gratuitos:

DocumentaciΓ³n:

πŸš€ Uso

Modo Interactivo

Ejecutar el menΓΊ principal:

python main.py

El sistema mostrarΓ‘ un menΓΊ con las siguientes opciones:

1. Consulta completa (todas las APIs)
2. Consultar solo Meteoblue
3. Consultar solo Open-Meteo (pronΓ³stico)
4. Consultar solo Open-Meteo (histΓ³rico)
5. Consultar solo OpenWeatherMap
6. Consultar solo Meteosource
7. Consultar radares IDEAM
8. Listar radares IDEAM disponibles
9. Descargar datos SIATA histΓ³ricos
10. Salir

Ubicaciones Predefinidas

El sistema incluye ubicaciones principales de Colombia:

  • πŸ™οΈ MedellΓ­n
  • πŸ›οΈ BogotΓ‘
  • πŸ–οΈ Cartagena
  • πŸŒ† Cali
  • 🌴 Barranquilla

TambiΓ©n permite ingresar coordenadas personalizadas.

Ejemplo de Uso en CΓ³digo

from main import ClimAPIManager

# Inicializar el gestor
manager = ClimAPIManager()

# Consulta completa para MedellΓ­n
resultados = manager.consulta_completa(
    lat=6.245,
    lon=-75.5715,
    location_name="Medellin",
    asl=1495
)

# Consultar solo OpenWeatherMap
datos = manager.consultar_openweather(6.245, -75.5715, "Medellin")

# Consultar radares IDEAM
archivos_radar = manager.consultar_ideam_radar("Barrancabermeja")

πŸ“ Estructura del Proyecto

ClimaGuru/
β”œβ”€β”€ main.py                          # Script principal con menΓΊ interactivo
β”œβ”€β”€ requirements.txt                 # Dependencias del proyecto
β”œβ”€β”€ .env                            # Variables de entorno (API keys)
β”œβ”€β”€ README.md                       # DocumentaciΓ³n
β”œβ”€β”€ LICENSE                         # Licencia del proyecto
β”‚
β”œβ”€β”€ data/                           # Datos descargados
β”‚   β”œβ”€β”€ data_meteoblue/            # PronΓ³sticos Meteoblue
β”‚   β”œβ”€β”€ data_openmeteo/            # Datos Open-Meteo (CSV/JSON)
β”‚   β”œβ”€β”€ data_openweathermap/       # Datos OpenWeatherMap
β”‚   β”œβ”€β”€ data_meteosource/          # Datos Meteosource
β”‚   β”œβ”€β”€ images_meteo_blue/         # Meteogramas
β”‚   β”œβ”€β”€ Radar_IDEAM/               # ImΓ‘genes de radar IDEAM
β”‚   └── siata_historico/           # Datos histΓ³ricos SIATA
β”‚
β”œβ”€β”€ logs/                          # Archivos de log
β”‚   β”œβ”€β”€ ideam/                     # Logs de IDEAM
β”‚   └── siata/                     # Logs de SIATA
β”‚
└── src/                           # CΓ³digo fuente
    β”œβ”€β”€ data_sources/              # Clientes de APIs
    β”‚   β”œβ”€β”€ meteoblue.py          # Cliente Meteoblue
    β”‚   β”œβ”€β”€ open_meteo.py         # Cliente Open-Meteo
    β”‚   β”œβ”€β”€ openweather.py        # Cliente OpenWeatherMap
    β”‚   β”œβ”€β”€ Meteosource.py        # Cliente Meteosource
    β”‚   β”œβ”€β”€ ideam_radar_downloader.py  # Descargador IDEAM
    β”‚   └── siata_cliente.py      # Cliente SIATA
    β”‚
    β”œβ”€β”€ processors/                # Procesadores de datos
    β”‚   β”œβ”€β”€ radar_processor.py    # Procesador de datos radar
    β”‚   β”œβ”€β”€ radar_advanced_processor.py
    β”‚   └── radar_raw_processor.py
    β”‚
    └── data_loaders/              # Cargadores de datos
        β”œβ”€β”€ file_loader.py        # Cargador de archivos
        β”œβ”€β”€ json_loader.py        # Cargador JSON
        └── unified_loader.py     # Cargador unificado

πŸ“Š Salida de Datos

Los datos se guardan automΓ‘ticamente en el directorio data/ con las siguientes caracterΓ­sticas:

  • JSON: Datos estructurados de APIs
  • CSV: Series temporales (Open-Meteo)
  • PNG/JPG: ImΓ‘genes de meteogramas y radares
  • Timestamp: Cada archivo incluye fecha y hora de descarga
  • OrganizaciΓ³n: Separados por fuente de datos

πŸ› οΈ TecnologΓ­as Utilizadas

  • Python 3.8+
  • requests - Consultas HTTP
  • pandas - AnΓ‘lisis de datos
  • boto3 - AWS S3 (IDEAM)
  • Pillow - Procesamiento de imΓ‘genes
  • matplotlib/seaborn - Visualizaciones
  • beautifulsoup4 - Web scraping (SIATA)
  • streamlit - Dashboard (opcional)

🀝 Contribución

Las contribuciones son bienvenidas. Para contribuir:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/NuevaCaracteristica)
  3. Commit tus cambios (git commit -m 'Agregar nueva caracterΓ­stica')
  4. Push a la rama (git push origin feature/NuevaCaracteristica)
  5. Abre un Pull Request

ARQUITECTURA GENERAL

πŸ—οΈ Diagrama de la Infraestructura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           CLIMAGURU BACKEND                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚
β”‚   β”‚   VM 1: Ubuntu      β”‚         β”‚   VM 2: MySQL       β”‚                   β”‚
β”‚   β”‚   Server (Flask)    │◄───────►│   Database          β”‚                   β”‚
β”‚   β”‚                     β”‚  Tailscaleβ”‚                   β”‚                   β”‚
β”‚   β”‚   IP: 100.x.x.x     β”‚   VPN   β”‚   IP: 100.x.x.x     β”‚                   β”‚
β”‚   β”‚                     β”‚         β”‚                     β”‚                   β”‚
β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                   β”‚
β”‚   β”‚  β”‚  Flask App    β”‚  β”‚         β”‚  β”‚  MySQL 8.0    β”‚  β”‚                   β”‚
β”‚   β”‚  β”‚  - API REST   β”‚  β”‚         β”‚  β”‚  - Usuarios   β”‚  β”‚                   β”‚
β”‚   β”‚  β”‚  - Auth JWT   β”‚  β”‚         β”‚  β”‚  - Consultas  β”‚  β”‚                   β”‚
β”‚   β”‚  β”‚  - Cache      β”‚  β”‚         β”‚  β”‚  - API Keys   β”‚  β”‚                   β”‚
β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β”‚
β”‚            β”‚                                   β–²                            β”‚
β”‚            β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                              β”‚
β”‚            β”‚         β”‚                                                      β”‚
β”‚            β–Ό         β”‚                                                      β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                                   β”‚
β”‚   β”‚  APIs Externas      β”‚                                                   β”‚
β”‚   β”‚  - OpenWeatherMap   β”‚                                                   β”‚
β”‚   β”‚  - Open-Meteo       β”‚                                                   β”‚
β”‚   β”‚  - Meteoblue        β”‚                                                   β”‚
β”‚   β”‚  - Meteosource      β”‚                                                   β”‚
β”‚   β”‚  - IDEAM            β”‚                                                   β”‚
β”‚   β”‚  - SIATA            β”‚                                                   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                   β”‚
β”‚                                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“¦ Componentes Principales

Componente FunciΓ³n TecnologΓ­a
API REST Exponer endpoints para el frontend Flask + Flask-RESTful
AutenticaciΓ³n Login seguro de operarios JWT (PyJWT)
Base de Datos Almacenar usuarios, consultas, API keys MySQL 8.0
ORM Mapeo objeto-relacional SQLAlchemy
Migraciones Control de cambios en BD Flask-Migrate
ValidaciΓ³n Validar datos de entrada Marshmallow
CORS Permitir acceso desde frontend Flask-CORS

. MODELO DE BASE DE DATOS

πŸ“Š Diagrama Entidad-RelaciΓ³n

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         MODELO ENTIDAD-RELACIΓ“N                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚   β”‚   usuarios   β”‚         β”‚    consultas     β”‚         β”‚  api_keys       β”‚ β”‚
β”‚   β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚
β”‚   β”‚ PK id        │◄───────── PK id            β”‚         β”‚ PK id           β”‚ β”‚
β”‚   β”‚    username  β”‚    1:N  β”‚ FK usuario_id    β”‚         β”‚ FK usuario_id   β”‚β”€β”˜
β”‚   β”‚    email     β”‚         β”‚    tipo_consulta β”‚         β”‚    proveedor    β”‚
β”‚   β”‚    password  β”‚         β”‚    ciudad        β”‚         β”‚    api_key      β”‚
β”‚   β”‚    rol       β”‚         β”‚    latitud       β”‚         β”‚    activa       β”‚
β”‚   β”‚    activo    β”‚         β”‚    longitud      β”‚         β”‚    creada_en    β”‚
β”‚   β”‚    creado_en β”‚         β”‚    fecha_inicio  β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚    fecha_fin     β”‚
β”‚                            β”‚    formato       β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                            β”‚    parametros    β”‚         β”‚  datos_clima    β”‚
β”‚                            β”‚    respuesta_api β”‚         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                            β”‚    promedios     │◄───────── PK id           β”‚
β”‚                            β”‚    estado        β”‚    1:1  β”‚ FK consulta_id  β”‚
β”‚                            β”‚    creada_en     β”‚         β”‚    temperatura  β”‚
β”‚                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚    presion      β”‚
β”‚                                                         β”‚    humedad      β”‚
β”‚                                                         β”‚    viento_vel   β”‚
β”‚                                                         β”‚    viento_dir   β”‚
β”‚                                                         β”‚    fuentes      β”‚
β”‚                                                         β”‚    guardado_en  β”‚
β”‚                                                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

PRΓ“XIMOS PASOS (FRONTEND)

🎨 Preparación para el Frontend

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ARQUITECTURA FUTURA CON FRONTEND                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚   β”‚   FRONTEND      β”‚         β”‚   BACKEND       β”‚         β”‚   DATABASE    β”‚ β”‚
β”‚   β”‚   (React/Vue)   │◄───────►│   Flask API     │◄───────►│   MySQL       β”‚ β”‚
β”‚   β”‚                 β”‚  HTTP   β”‚                 β”‚  TCP    β”‚               β”‚ β”‚
β”‚   β”‚  - Login Form   β”‚         β”‚  - Auth JWT     β”‚         β”‚               β”‚ β”‚
β”‚   β”‚  - Dashboard    β”‚         β”‚  - Consultas    β”‚         β”‚               β”‚ β”‚
β”‚   β”‚  - Mapas        β”‚         β”‚  - API Externas β”‚         β”‚               β”‚ β”‚
β”‚   β”‚  - GrΓ‘ficos     β”‚         β”‚                 β”‚         β”‚               β”‚ β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                              β”‚
β”‚   ComunicaciΓ³n: REST API JSON                                                β”‚
β”‚   AutenticaciΓ³n: Bearer Token JWT                                            β”‚
β”‚   CORS: Habilitado en Flask                                                  β”‚
β”‚                                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”§ ConfiguraciΓ³n CORS para Frontend

# En app/__init__.py, ya estΓ‘ configurado:
from flask_cors import CORS

cors.init_app(app, origins=[
    'http://localhost:3000',      # React dev
    'http://localhost:8080',      # Vue dev
    'https://tu-dominio.com'      # ProducciΓ³n
])

πŸ“¦ Endpoints Listos para Frontend

Funcionalidad Frontend Endpoint Backend MΓ©todo
Login /api/auth/login POST
Registro /api/auth/register POST
Dashboard datos /api/consultas/mis-consultas GET
Nueva consulta /api/consultas/tiempo-real POST
Ver detalle /api/consultas/<id> GET
Descargar CSV /api/consultas/<id>/descargar GET
EstadΓ­sticas /api/reportes/estadisticas GET

πŸ“ Licencia

Este proyecto estΓ‘ bajo la licencia especificada en el archivo LICENSE.

πŸ‘₯ Autores

  • *Paradoja Devs

πŸ“§ Contacto

Para preguntas o sugerencias, por favor abre un issue en el repositorio.


Última actualización: Febrero 2026

About

Analisis de Clima desde APIs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors