Weather App Architecture
Runtime Flow
Section titled “Runtime Flow”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 responseCI/CD Evidence Flow
Section titled “CI/CD Evidence Flow”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]Current Transition
Section titled “Current Transition”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.