WeatherTool project documentation
This directory contains the working documentation for the WeatherTool modernization effort. The repository-root README.md is preserved as the original project overview; these documents describe the reviewed code, current staging environment, and changes being developed.
Current status
- Windows is restricted to source editing, review, and Git operations. Rocky is the sole compile, build, development-runtime, and test environment. The Ubuntu VPS is a deployment target only.
- A production-like staging copy runs through Docker Compose on Rocky Linux at
http://192.168.1.101:9190. - Staging ingests real LVĢMC station and water-temperature observations from the free
data.gov.lvopen-data feeds; synthetic data generation was removed once real ingestion was verified. The private LVGMC FTP feed and DMI HARMONIE forecast feed still exist in code but stay gated behindENABLE_LEGACY_PROVIDER_JOBS(default off) pending real credentials. - The safe scheduled jobs (open-data station ingestion, GRIB cleanup) run in staging; the legacy FTP/HARMONIE jobs stay off by default so placeholder credentials can't crash-loop the app.
- PostgreSQL is private to the project Compose network; only the Scala application publishes a host port.
- The operator-facing workspaces now use the Latvian workflow names Stacijas, Kartes, Faktiskā, Ūdens, Brīdinājumi, Apskats, Arhīvs, Harmonie, and LVĢMC. Kartes retains custom analytical map outputs, while Faktiskā is a fixed 13-position, latest-temperature newsroom workflow with a locked 3840×1440 export.
- Faktiskā symbol placement is automatic after manual image selection and is anchored to each rendered temperature badge.
- Ūdens auto-populates its six ranges on load with real per-zone water-temperature min/max (65 LVĢMC stations classified into the 6 named zones), with manual override and reset still available. Uses separate authoritative 1920×1080 and 3840×1440 production templates; both exports have been visually validated.
- Brīdinājumi renders current LVĢMC warning polygons over a production border overlay with feathered severity fills, plus draggable/resizable per-warning weather-symbol placement. Its lon/lat-to-pixel projection is an affine fit calibrated against the same validated city pixel positions Kartes/Faktiskā already use, replacing an earlier bounding-box calibration that drifted up to ~200px on the 3840 canvas.
- Confirmed local Monda Regular/Bold files provide interface and generated-graphic typography; weather symbols use normalized transparent image assets.
- Release
d7439a2bis deployed as immutable imageweathertool:d7439a2bd5221e5ee176bfc1c141c8329094efb8; releasef78b0a26remains the immediate application rollback. This release is a frontend design pass: a reworked visual palette (layered blue-gray background, kept the original accent blue for buttons/icons), Faktiskā decluttered (collapsible station list and map settings, a fixed cascade bug in the resolution buttons, "Kartes noformējums" restructured and translated to Latvian, including a fresh-eyes-review catch onWindInputsthat had been missed), a temperature-badge vertical-centering fix, and Brīdinājumi promoted into the visible header nav with icons throughout. No database or scheduler changes — application-only. - The isolated VPS UAT stack is running and healthy: WeatherTool is bound to
127.0.0.1:8002, Authelia to127.0.0.1:9091, and PostgreSQL has no host port. Public access is routed through Cloudflare, Nginx, and Authelia. - Cloudflare delegation is active, strict origin TLS covers only
laikapstak.liandauth.laikapstak.li, and the public Nginx/Authelia login flow is operational without changing the existing HOP site. - The VPS
weathertable now holds only real LVĢMC open-data station observations; its original 14-day synthetic dataset was backed up to/srv/weathertool/backups/pre-real-data-release/and wiped on 2026-08-23 as part of the138f57c8release. The scheduled open-data job runs on the VPS (minutes 15/45); the legacy FTP/HARMONIE jobs stay off pending real credentials. - Approved 1920×1080 and 3840×1440 PNG production bases are now the rendering source for Faktiskā and Ūdens temperatūra; code draws only the changing values, selected weather symbols, and wind data over those fixed newsroom graphics.
- Browser branding assets and Latvian Open Graph/Twitter metadata are included for favicon, Apple home-screen icon, and link-preview support. Public crawler access still depends on the Nginx/Authelia policy used for the metadata and preview image.
- Browser verification is complete for the deployed
d7439a2brelease: exact release image smoke-tested on Rocky before transfer (bundle hash and headless-browser screenshot matched the known-good local build), checksum verified on both ends, container health/loopback/public HTTPS confirmed. Newsroom testers will be given the domain first, without walkthrough, to see how intuitive the workflow is before any guidance is provided. - Frontend dependency maintenance is complete: Solid runtime and Vite tooling were updated, obsolete packages were removed, TypeScript checking was added, and a clean Rocky
npm ci, typecheck, production build, full audit, and production-only audit all pass with zero known vulnerabilities. - This is not yet approved or hardened for workplace production.
Documents
- Architecture and data flow — components, data sources, data flow, and repository layout.
- Development and staging — Windows source/Git workflow, Rocky development and verification, VPS deployment, synthetic data, and rollback.
- Product workflows — the intended purpose and current status of each visible workspace.
- Update roadmap — phased technical, security, dependency, testing, and UI work.
- Third-party notices — licenses and attribution for adapted interface components.
- Temporary VPS staging plan — isolation, authentication, prepared deployment bundle, release, backup, verification, and rollback model for external user testing.
Documentation rules
- Do not put passwords, API keys, workplace URLs, or production data in Git.
- Document the behavior that exists separately from behavior that is proposed.
- Update these documents in the same commit when a change alters deployment, data flow, or a user workflow.
- Keep synthetic/development instructions clearly distinguished from workplace production procedures.
- Preserve established Latvian names in operator-facing workspaces and production files even when development notes are written in English.