Replace Leaflet/raster tiles with MapLibre GL JS: an online OpenFreeMap style and an offline style built from a local PMTiles archive via pmtiles.js and protomaps-themes-base (no glyphs/labels offline by design, see docs/architecture.adoc). Frontend libraries are vendored locally rather than loaded from a CDN so the app keeps working with no internet access. Also add an animated RainViewer precipitation radar overlay (toggle, play/pause, scrub slider), matching the default time window of the weather-radar-card Home Assistant integration.
3.2 KiB
Development guide
Web app only
bundle install
bundle exec puma -C config/puma.rb
Open http://127.0.0.1:4567. For auto-reload during development, run
via the rerun gem instead:
bundle exec rerun -- bundle exec puma -C config/puma.rb
|
Tip
|
Browsers apply heuristic caching to static files even without
explicit cache headers, so an edit to public/ (or views/) can
appear not to have taken effect on the next reload. Force a real
reload (e.g. Ctrl/Cmd+Shift+R) if that happens.
|
Offline map data
To enable the offline style, place a PMTiles file at
data/offline.pmtiles (see docs/architecture.adoc for how it is
served and styled). It is not part of the repository — obtain or
build one locally:
-
The simplest source is a pre-built extract from protomaps.com’s extract builder — pick a region and download it as
.pmtiles. Its schema is whatprotomaps-themes-base(the styling library used for the offline style) expects. -
To convert some other vector tile source (e.g. an
.mbtilesfile) into PMTiles, use the go-pmtiles CLI:pmtiles convert in.mbtiles data/offline.pmtiles.
Once the file is in place, GET /api/offline-tiles reports
available: true and the map defaults to the offline style.
This is picked up automatically for cargo tauri dev (it just runs
the Sinatra app from the project root). To ship it inside a packaged
build, add it to bundle.resources in src-tauri/tauri.conf.json:
"../data/offline.pmtiles": "data/offline.pmtiles". Not added by
default, since these files can be large and are picked per
deployment.
Desktop shell (Tauri)
Prerequisites
-
Rust (stable) and the Tauri CLI:
cargo install tauri-cli --version "^2" -
Ruby + Bundler, with gems installed (
bundle installin the project root) -
Platform build tools required by Tauri itself:
-
Linux: WebKitGTK and GTK development packages, e.g. on Debian/Ubuntu:
sudo apt install libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \ libgtk-3-dev libsoup-3.0-dev build-essential -
macOS: Xcode command line tools.
-
Windows: the WebView2 runtime (preinstalled on current Windows) and the MSVC build tools.
-
See the upstream Tauri prerequisites page for the current package names on your platform.
Running in development
cd src-tauri
cargo tauri dev
This runs beforeDevCommand (starts Puma on 127.0.0.1:4567) and
opens a native window pointed at it, per src-tauri/tauri.conf.json.
Building
cd src-tauri
cargo tauri build
Requires Gemfile.lock to exist (bundle install beforehand), since
the Ruby app files are embedded into the bundle as resources. See
docs/architecture.adoc for the current limitation around this build
still depending on a system Ruby installation on the target machine.
Regenerating icons
Desktop icons live in src-tauri/icons/. To regenerate them from a
new source image (at least 1024x1024 PNG):
cd src-tauri
cargo tauri icon path/to/source.png