- QML 38.8%
- C++ 37%
- Python 7.7%
- CMake 5.4%
- Go 4.9%
- Other 6.2%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .vscode | ||
| 3rdparty | ||
| cmake | ||
| containers | ||
| docs | ||
| icons | ||
| legal | ||
| qml | ||
| rpm | ||
| scripts | ||
| server | ||
| src | ||
| tests | ||
| translations | ||
| .env.template | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| flake.lock | ||
| flake.lock.license | ||
| flake.nix | ||
| harbour-wetterstein.desktop | ||
| LICENSE | ||
| LICENSE.license | ||
| mise.toml | ||
| README.md | ||
| renovate.json | ||
| renovate.json.license | ||
Wetterstein
A Sailfish OS weather app with hourly and multi-day forecasts, precipitation radar, GPS location and saved places. Weather data comes from Bright Sky using DWD data.
Screenshots
Screenshots from the Sailfish OS test emulator with synthetic demo weather. Click a thumbnail to view the full-resolution image.
| Dashboard | Precipitation radar | Add a city |
|---|---|---|
| Saved cities | Hourly list | App cover |
|---|---|---|
Watch the MP4 tour · Capture setup, demo data and media credits
Map data © OpenStreetMap contributors.
Development
Clone with submodules (git clone --recurse-submodules <repository-url>).
Install mise and the Sailfish OS SDK, then:
cp .env.template .env # adjust SDK path and target
mise trust
mise install
mise tasks
mise run test
mise run dev:deploy
mise run dev:run
The same tasks work on the host and in the optional
Nix MicroVM. The SDK build engine and emulator run on the host.
Start them with sfdk engine start and sfdk emulator start.
mise run test:one test_models runs one previously configured test binary;
mise run lupdate updates translations.
Packaging
Imprint and privacy documents use the
shared legal system.
Copy legal/provider.example.json to legal/provider.local.json, fill in
the publisher details locally and keep this file out of Git. Review
legal/datenschutz.html.in against the deployed proxy configuration.
Run mise run check:dist before packaging. RPM builds require complete legal
details; development builds can display a marked preview.
See versioning for releases and the publication audit for outstanding history findings.
Betrieb
The radar proxy behind wetterstein.dencla.de lives in server/ (Go,
no dependencies). It caches DWD precipitation radar images and serves
/api/v1/radar/frames, /api/v1/radar/images/… and /health. It is not part
of the RPM. Locally: mise run cloud:serve (127.0.0.1:8080, cache in
server/data/) and mise run cloud:test.
Deployment auf d0b nach Vertrag 1: Dienst wetterstein, Nummer 08, Rolle
app auf 127.0.0.1:10880, Daten unter /srv/wetterstein/data, Domains
wetterstein.dencla.de und wetterstein.zumlernen.de. Alles dafür liegt in
containers/; das Bündel enthält nur containers/, server/
und LICENSE.
Server-Releases haben eigene Tags cloud-v<version> (Version in
server/VERSION), getrennt von den App-Tags vX.Y.Z; siehe
versioning. Ein gepushter cloud-v*-Tag baut über
.forgejo/workflows/release.yml das Bündel und
hängt es an das Forgejo-Release.
mise run cloud:release:prepare -- 1.0.0 # server/VERSION, Commit, Tag cloud-v1.0.0
mise run cloud:release:deploy -- cloud-v1.0.0 # cloud:test, deploy/ und dist/
mise run cloud:test:containers # rootless, read-only, ohne Capabilities, Health, UID 1000
git push origin main && git push origin cloud-v1.0.0
Einmalig als root auf d0b:
app add wetterstein 08
editor /etc/apps/wetterstein/app.conf # DOMAIN=wetterstein.dencla.de SITE_DOMAINS="wetterstein.dencla.de wetterstein.zumlernen.de" REPO=<Forgejo-Repo>
install -m 0640 -o root -g wetterstein /dev/null /etc/apps/wetterstein/app.env # Werte aus containers/env/app.env.example
app deploy wetterstein cloud-v1.0.0
Der Dienst braucht keine Geheimnisse. Der Radarcache baut sich nach dem Start selbst auf (alle 5 Minuten, 3 h Rückblick, 110 min Vorhersage); vom alten Server muss nichts übernommen werden.
License
GPL-3.0-or-later. See LICENSE. The About page displays all packaged license texts and legal documents offline.
