Live v1.0.0 Flagship App

Weather Service AI

100% serverless global weather intelligence with continuous ETL, interactive maps, and Machine Learning forecasts.

Zero-cost full-stack weather service ingesting live telemetry across 160+ global cities via OpenWeatherMap API. Combines partitioned CSV historical storage, daily Scikit-Learn Linear Regression model retraining, and interactive frontend visualizations with time-series charts (Chart.js) and geospatial maps (Leaflet).

Weather Service AI

🎯System Objectives

✓

Design and implement a zero-cost 100% serverless global weather data harvesting and prediction architecture.

✓

Build a daily batch ETL pipeline using GitHub Actions eliminating the need for dedicated servers or traditional SQL databases.

✓

Implement deterministic Machine Learning prediction models (Scikit-Learn) to benchmark accuracy against official OpenWeatherMap 5-day forecasts.

✓

Deliver a rich, fluid, and multilingual user experience with Leaflet maps, instant city filtering, and client-side CSV streaming via PapaParse.

⚡Key Capabilities & Modules

⚙️

Automated ETL Pipeline: GitHub Actions triggers the Python data harvester 3 times daily (06:00, 14:00, 22:00 UTC) unattended.

🤖

Machine Learning Forecasting: 3 Linear Regression models trained on lagged metrics (lag-1) and seasonal day-of-year features to predict tomorrow's temps.

🗺️

Geospatial Interactive Map: real-time global weather stations and temperatures displayed via dynamic Leaflet.js markers.

📈

Multivariate Time-Series: interactive Chart.js visualizations toggling temperature, humidity, wind, and cloudiness trends.

⚡

Client-Side Streaming via PapaParse: instant client-side parsing of partitioned historical CSV files directly in browser memory.

🌐

Bilingual UI & Netlify Deployment: dynamic language switching and transparent high-speed Netlify rewrite proxy in production.

📐Architecture & Design Specifications

Decoupled 3-tier architecture: ETL automation in GitHub Actions executing read_weather.py against OpenWeatherMap v2.5, partitioned static persistence in CSV and JSON files pushed to the repository, and monolithic SPA frontend hosted on Netlify with transparent 200! rewrite proxy routing from Datalaria.

flowchart LR CRON["GitHub Actions Cron (3x/dia)"] --> PY["read_weather.py (ETL Python)"] PY -->|"API v2.5"| OWM["OpenWeatherMap"] PY -->|"Series Temporales"| CSV["datos/ciudades_csv"] CSV -->|"Entrenamiento"| ML["Scikit-Learn (LinearRegression)"] ML --> PRED["predicciones.json"] PY --> MAP["city_locations.json"] PRED --> UI["Dashboard Web (Chart.js + Leaflet)"] MAP --> UI CSV --> UI

🔍 Click diagram to enlarge to fullscreen

Invariant Architectural Principles:

  • 100% Serverless Philosophy: zero idle compute costs via free scheduled cron workflows and static CDN hosting.
  • Lightweight and portable persistence: each city is an isolated flat CSV file structured with 15 normalized meteorological variables.
  • Deterministic quantitative modeling: linear regression trains strictly on observed empirical records without LLM API calls.

🛠️Technology Stack

FRONTEND

Vanilla JSTailwind CSS CDNChart.jsLeaflet.jsPapaParse.jsChoices.jsFeather Icons

BACKEND

Python 3.10Scikit-LearnPandasRequests

DEVOPS

GitHub Actions CronNetlify HostingNetlify 200! Proxy Rewrite

APIS

OpenWeatherMap Current Weather (2.5)OpenWeatherMap 5-Day Forecast (2.5)

📚Reference Articles & Architecture Series

This application is fully documented in an engineering series published on the blog:

Weather Service Project (Part 1): Building the Data Collector with Python and GitHub Actions or Netlify
Part 1

Weather Service Project (Part 1): Building the Data Collector with Python and GitHub Actions or Netlify

We kick off our weather project by building the engine: a Python script that talks to an API, saves historical data, and runs …

Read full article →
Weather Service Project (Part 2): Building the Interactive Frontend with GitHub Pages or Netlify and JavaScript
Part 2

Weather Service Project (Part 2): Building the Interactive Frontend with GitHub Pages or Netlify and JavaScript

After building the data collector, it’s time to visualize it! This post guides you through creating an interactive weather …

Read full article →
Weather Service Project (Part 3): Predicting the Future with AI and OpenWeatherMap
Part 3

Weather Service Project (Part 3): Predicting the Future with AI and OpenWeatherMap

From data collection to dynamic dashboards, now it’s time to predict! This post explores integrating OpenWeatherMap’s 5-day …

Read full article →
Project Weather (Extras): Beyond AI - Building a Robust, User-Centric Dashboard
Part 4

Project Weather (Extras): Beyond AI - Building a Robust, User-Centric Dashboard

While Project Weather’s AI prediction model is a highlight, its true robustness lies in its meticulously designed infrastructure. …

Read full article →

⏱️Evolutionary History & Versions (SemVer)

Formal record of releases, feature additions, and security patches:

v1.0.0 2025-12-06 RELEASE

Final release featuring Leaflet interactive map, multilingual support, and UX polish

  • Geospatial map integration with Leaflet.js displaying interactive markers with live telemetry.
  • Full bilingual support (ES/EN) with dynamic language toggle in the control bar.
  • Advanced city search with Choices.js and coordinate normalization for over 160 global stations.
  • Client-side CSV parsing optimization using asynchronous streaming in PapaParse.
v0.3.0 2025-11-15 FEATURE

Machine Learning module with Scikit-Learn and benchmarking vs OpenWeatherMap 5D

  • Implementation of 3 Linear Regression models for 24-hour temperature forecasting (max, min, and mean).
  • Feature engineering including lagged previous-day metrics (lag-1) and seasonal day-of-year indicators.
  • Consolidated forecast export in predicciones.json and side-by-side comparative visualization in Chart.js.
v0.2.0 2025-11-08 FEATURE

Interactive frontend dashboard with Chart.js and PapaParse

  • SPA frontend construction featuring multivariate dynamic charts in Chart.js.
  • Direct client connection to partitioned historical CSV files per city.
v0.1.0 2025-10-31 FEATURE

Backend Python data harvester engine and automated pipeline with GitHub Actions

  • Development of read_weather.py script connecting to OpenWeatherMap API v2.5.
  • Historical dataset structuring partitioned in datos/ folders per city.
  • Configuration of actualizar-clima.yml GitHub Actions workflow for 3x daily execution.

Want to deploy this architecture or explore custom solutions?

If you are interested in deploying this architecture, exploring custom solutions for your organization, or proposing new features to evolve the app, get in touch directly.

You can also reach out through the contact form (contacto@datalaria.com).