Skip to content

Weather App Architecture

sequenceDiagram
participant Browser
participant Frontend as Nginx + React assets
participant Backend as Weather backend
participant Provider as Open-Meteo
Browser->>Frontend: GET /
Browser->>Frontend: GET /api/weather?latitude=...&longitude=...
Frontend->>Backend: Proxy request with internal service token
Backend->>Provider: Fetch normalized weather data
Provider-->>Backend: Weather payload
Backend-->>Frontend: JSON response
Frontend-->>Browser: JSON response
flowchart LR
commit[Commit] --> lint[Lint and tests]
lint --> build[Build images]
build --> scan[SBOM, SCA, image and secret scans]
scan --> sign[Cosign signature]
sign --> promote[Digest promotion]
promote --> deploy[Staging then production]

The Weather App is validated across local tests, VPS staging and a Kubernetes platform. The VPS staging environment keeps HTTPS, WAF and monitoring checks close to the application while the Kubernetes platform owns GitOps, policy enforcement and namespace isolation.

Minikube and Flux are retained as a validation iteration for manifests and GitOps workflows. They are not treated as the final platform baseline. The production platform choice is governed by ADRs and the homelab-platform repository.