07b16accb2b9deae582dc5526f3366f40ca917c0
LVĢMC's open-data station list has no station in or near Valmiera at all (confirmed live 2026-08-23 in OpenDataStationService.scala), so that fixed position has been silently blank. Priekuļi is the closest currently- reporting station -- measured against the app's own calibrated map coordinates (~56px away vs. the next-closest candidate, Rūjiena, at ~81px), not a guess. Same pattern already used for Stende/Talsi and Zīlāni/Jēkabpils. Implemented client-side in Faktiskā's fetch only: query Priekuļi's reading, remap it back onto the "Valmiera" key before it reaches the rest of the component. Valmiera's marker position and on-map label are untouched (both are tied to Valmiera's real map location, not Priekuļi's) -- only the data source for that one slot changes. This also fixes a second, previously unexplained symptom for free: the weather-symbol picker only lists cities with a value, so Valmiera never appeared there either; it now does. Provisional pending direct confirmation from LVĢMC -- documented as such in PRODUCT_WORKFLOWS.md, matching how Stende/Zīlāni are already flagged. Verified: typecheck clean, production build succeeds, headless-browser checks confirm Valmiera's field shows Priekuļi's real live value (14.8°C, fresh timestamp, not flagged manual/stale) and now appears in the weather-symbol exceptions list (13 cities, was 12).
Weather Tool
Tool for downloading historical and real-time data from weather stations in Latvia. It aggregates and displays data for different time periods, cities, and weather parameters.
Setup
Rename .env-sample to .env and fill in credentials
Environment boundary
- Windows: source editing, review, and Git operations only. Do not compile, build, run containers, install project dependencies, or test the application here.
- Rocky Linux: the only development runtime; compile, build, run, seed, and test WeatherTool here.
- Ubuntu VPS: deployment target only. It receives the reviewed release artifact built and verified on Rocky; it is not a development or build host.
Run
docker-compose up --build --no-cache --force-recreate
Web
nginx proxy config
server {
listen 80;
server_name laikazinas.lsm.lv;
location / {
proxy_pass http://localhost:9090; # Forward requests to the Scala app
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Rocky development runtime
// 1st terminal
podman-compose up postgres
// 2nd terminal
sbt run
// 3rd terminal
cd web/
npm run dev
Run one file
sbt "runMain grib.GribParserTest"
Backend Tech:
- scala: cats-effects, http4s, fs2, circe, scalatest
- postgres
Frontend Tech:
- SolidJS
- Vite
Fly commands
// suspend instance
fly scale count 0
// check display
fly ssh console
df -h
fly scale memory 512
Description
Languages
TypeScript
60.1%
Scala
33.3%
CSS
5.7%
HTML
0.4%
Dockerfile
0.4%
Other
0.1%