2026-08-25 19:14:48 +03:00
|
|
|
# WeatherTool
|
|
|
|
|
|
|
|
|
|
WeatherTool prepares the weather graphics used on air: current temperatures,
|
|
|
|
|
water temperatures, and severe-weather warnings, rendered as fixed-size PNG
|
|
|
|
|
exports ready to drop into a broadcast. It's a large update to the tool
|
|
|
|
|
currently running in production at `laikazinas.lsm.lv`.
|
|
|
|
|
|
|
|
|
|
## What it does
|
|
|
|
|
|
|
|
|
|
- Pulls real observation data from LVĢMC (Latvia's national weather
|
|
|
|
|
service) — current station temperatures, water temperatures, and active
|
|
|
|
|
warnings — from their public open-data feed.
|
|
|
|
|
- Lets an operator review and, where needed, correct individual values
|
|
|
|
|
before export, without touching the underlying data.
|
|
|
|
|
- Renders that data onto fixed newsroom map templates and exports
|
|
|
|
|
broadcast-ready PNGs at the station's required resolutions.
|
|
|
|
|
- Also includes analytical tools (historical station comparisons, a full
|
|
|
|
|
data archive) for exploring the underlying weather data beyond what goes
|
|
|
|
|
on air.
|
|
|
|
|
|
|
|
|
|
## How it's built
|
|
|
|
|
|
|
|
|
|
A Scala backend (cats-effect, http4s, PostgreSQL) ingests and serves the
|
|
|
|
|
data; a SolidJS frontend is where operators build the graphics. Both are
|
|
|
|
|
described in full under [`docs/`](docs/README.md).
|
|
|
|
|
|
|
|
|
|
## Status
|
|
|
|
|
|
|
|
|
|
Actively in development. All development, testing, and staging currently
|
|
|
|
|
happens on a single Rocky Linux machine; a temporary public test
|
|
|
|
|
environment for the new version is at `laikapstak.li`, gated behind
|
|
|
|
|
authentication, separate from the live `laikazinas.lsm.lv` service it will
|
|
|
|
|
eventually replace. Continuous integration runs automatically on every
|
|
|
|
|
push via Gitea Actions.
|
|
|
|
|
|
|
|
|
|
## Security
|
|
|
|
|
|
|
|
|
|
The application has been through an independent security review, with
|
|
|
|
|
findings (including a critical one) found and fixed — see
|
|
|
|
|
[`docs/UPDATE_ROADMAP.md`](docs/UPDATE_ROADMAP.md) for the full history.
|
|
|
|
|
The public test environment sits behind Cloudflare, an authentication
|
|
|
|
|
gate, and a private database with no public port. Deployments are manual,
|
|
|
|
|
checksummed, and smoke-tested before going live — see
|
|
|
|
|
[`docs/VPS_RELEASE_RUNBOOK.md`](docs/VPS_RELEASE_RUNBOOK.md).
|
|
|
|
|
|
|
|
|
|
## Getting started
|
|
|
|
|
|
|
|
|
|
See [`docs/README.md`](docs/README.md) for current status, architecture,
|
|
|
|
|
and the full documentation set, and [`docs/DEVELOPMENT_AND_STAGING.md`](docs/DEVELOPMENT_AND_STAGING.md)
|
|
|
|
|
for exact build, run, and deployment commands. For local setup, copy
|
|
|
|
|
`.env-sample` to `.env` and fill in real values.
|