Skip to content

About

Test de app realtime open source para tracking de lluvia

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

67 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

🌧️ Lluvia CDMX y Estado de México — Radar meteorológico en vivo

Dashboard interactivo de precipitación en tiempo real para la Ciudad de México. Muestra un radar de lluvia animable sobre las 16 alcaldías, con dirección del sistema, geolocalización y una interfaz estilo iOS nativo. Todo en un solo archivo HTML, sin build, sin dependencias que instalar y sin API keys.

Demo: https://ironsss.github.io/lluviaTest/

Capturas

Radar de lluvia con línea de tiempo Pronóstico de +10 a +60 minutos Ruta con tiempo de lluvia

Capturas de la versión Android (en desarrollo), que usa esta misma interfaz. Radar, pronóstico de +10 a +60 min y ruta A → B con el tiempo de lluvia por tramo. Las capturas se tomaron con el radar sin lluvia (0%).

Estado Sin API key Licencia


Características

  • Radar de lluvia real — reflectividad de precipitación de RainViewer, la misma que usan apps meteorológicas profesionales, refrescada cada 5 minutos.
  • Línea de tiempo animable — reproduce las últimas 2 horas de lluvia y frames de nowcast (pronóstico a corto plazo) para ver hacia dónde se mueve el sistema.
  • Campo vectorial de dirección — estima hacia dónde se desplaza la lluvia mediante flujo óptico entre los dos frames de radar más recientes.
  • Pronóstico en la línea de tiempo (+10 a +60 min) — al final de la barra de tiempo, después de la marca ahora, aparecen cuadros de pronóstico (zona verde) que muestran la lluvia desplazada según el movimiento estimado del radar, con más suavizado y transparencia cuanto más lejano el horizonte. Los botones +10 … +60 saltan a cada cuadro e indican la probabilidad de lluvia en tu punto.
  • Ruta y lluvia (A → B) — escribe origen y destino (lugares o direcciones, con sugerencias) o elígelos en el mapa; la ruta sigue las calles reales (a pie, bici o auto) y muestra cuánto tiempo te tocaría de lluvia en el trayecto. Cada tramo se evalúa con el pronóstico a la hora en que lo recorrerías, y se compara salir ahora, +10, +20 o +30 min. El pronóstico llega a 60 min.
  • Mi ubicación — botón de geolocalización con marcador "estás aquí" y círculo de precisión, para saber si te va a llover encima ahora mismo.
  • Interfaz móvil-first — mapa a pantalla completa con bottom sheet deslizable, glassmorphism sutil y switches estilo iOS. Respeta el notch y la barra inferior del iPhone.
  • Modo pantalla completa y capas conmutables (radar, flecha, nowcast, auto-actualización).
  • Tolerante a fallos — los errores de red muestran un estado claro y el radar se reintenta automáticamente.

Cómo funciona

El dashboard combina tres fuentes de datos en un mapa de Leaflet:

┌─────────────────────────────────────────────┐
│  Etiquetas de calles y colonias (Esri)      │  ← siempre encima
├─────────────────────────────────────────────┤
│  Radar de lluvia (RainViewer, translúcido)   │  ← capa intermedia
├─────────────────────────────────────────────┤
│  Mapa base oscuro sin etiquetas (Esri)      │  ← fondo
└─────────────────────────────────────────────┘
      + flujo de dirección (canvas, desplazamiento observado por radar)

El radar se sirve como tiles de imagen (una sola petición ligera por refresco), lo que evita por completo los límites de cuota que aparecen al muestrear precipitación punto por punto sobre una malla.


APIs consumidas

Todas gratuitas y sin API key para uso personal/educativo.

Fuente Endpoint Uso Frecuencia
RainViewer api.rainviewer.com/public/weather-maps.json Radar de lluvia (capa principal + timeline) 1 petición / 5 min
Esri Dark Gray server.arcgisonline.com Tiles del mapa base y etiquetas Bajo demanda (pan/zoom)
OpenFreeMap (OpenStreetMap, vectorial) tiles.openfreemap.org Calles y nombres nítidos sobre el radar (respaldo: tiles raster de OSM) Bajo demanda (pan/zoom)
Open-Meteo api.open-meteo.com Modelo meteorológico por hora (próximas 3 h) para contrastar con el radar 1 petición por punto cada 10 min
Esri World Geocoder geocode.arcgis.com (respaldos: photon.komoot.io, nominatim.openstreetmap.org) Búsqueda de lugares y direcciones con sugerencias Al escribir (con pausa de 280 ms)
OSRM (FOSSGIS) routing.openstreetmap.de Ruta real por calles a pie / bici / auto 1 petición por ruta
Geolocation API navigator.geolocation Ubicación del usuario (local del dispositivo) Al tocar el botón

Notas sobre las APIs

  • RainViewer ofrece resolución nativa hasta el nivel de zoom ~7 (≈1 km por celda). Al acercar más, la lluvia se ve suavizada — es normal en cualquier radar meteorológico.
  • La dirección se calcula localmente en el navegador comparando los dos frames más recientes; no requiere otra API ni una clave.

Uso

Opción A — abrir el demo

Entra a https://ironsss.github.io/IluviaTest/ desde cualquier navegador. En iPhone, para que se sienta como app nativa: Compartir → Agregar a inicio; así se abre a pantalla completa, sin barra del navegador.

Opción B — correr localmente

git clone https://github.com/ironsss/IluviaTest.git
cd IluviaTest
# abrir index.html en el navegador, o servirlo:
python3 -m http.server 8000
# luego visita http://localhost:8000

Importante: la geolocalización solo funciona sobre https:// o localhost. Abrir el archivo con file:// deshabilita el botón de ubicación.


Despliegue en GitHub Pages

  1. Sube index.html (y este README.md) a la raíz del repositorio.
  2. Añade un archivo vacío llamado .nojekyll en la raíz — evita que Pages intente procesar el sitio con Jekyll y falle.
  3. Settings → Pages → Source: Deploy from a branch → rama main → carpeta / (root) → Save.
  4. Espera ~1 minuto. La URL aparecerá en esa misma página.

Si el build falla con Conversion error: Jekyll::Converters::Scss, es justamente el paso 2: falta el .nojekyll.


Controles

Control Acción
🎯 Botón de ubicación Centra el mapa en tu posición y marca "estás aquí"
⛶ Botón de pantalla completa Maximiza el mapa (colapsa el panel en iOS)
▶ / ❚❚ Reproduce/pausa la animación de la lluvia
Deslizador de tiempo Muévete entre frames pasados y nowcast
Bottom sheet Arrástralo hacia arriba para ver stats, capas y leyenda
Switches Activa/desactiva radar, flecha, nowcast y auto-actualización

Stack técnico

  • HTML + CSS + JavaScript vanilla — un solo archivo, cero build.
  • Leaflet 1.9.4 — motor de mapas (vía CDN).
  • SVG — campo vectorial de dirección.
  • CSS moderno — backdrop-filter (glassmorphism), env(safe-area-inset-*), panes personalizados de Leaflet para el orden de capas.
  • Bottom sheet con física de arrastre propia (touch events + snap points).

Limitaciones conocidas

  • El radar de RainViewer depende de la disponibilidad de los datos de origen; RainViewer no garantiza continuidad.
  • La dirección es una estimación visual del desplazamiento de la precipitación, no una medición de viento ni un pronóstico. Si no hay suficiente lluvia entre frames, aparece como no disponible.
  • La resolución del radar es meteorológica (~1 km), no calle por calle. Las calles del mapa base sí se ven nítidas a cualquier zoom.

Atribución y licencias

Este proyecto usa datos de terceros bajo sus respectivas licencias:

  • Radar: RainViewer — uso personal y educativo. Se requiere mencionar la fuente con enlace.
  • Mapa base: Esri World Dark Gray y OpenStreetMap contributors.

El código de este repositorio se publica bajo licencia MIT (ver LICENSE).


Autor

Desarrollado por David García (@ironsss).

Contribuciones y sugerencias son bienvenidas — abre un issue o un pull request.

About

Test de app realtime open source para tracking de lluvia

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages