Offline GPX follower — your tracks, your maps, no signal needed.
Starting…
G'day — two things before you ride.
The offline map is a one-time ~41 MB download, stored on the
device — later opens are instant.
DingoNav
No tracks loaded yet
▦
Demo
Day
Mute
Follow
Profile
Auto zoom
Schema
Track colour
Settings
——
No track selected
load a GPX to begin
turn strip zone — kept clear
DingoNav
Group ride (needs signal)
off — enter a shared ride name to see friends
Everyone with the same ride name sees each other's position (updates ~20 s via ntfy.sh when online; silently off without signal). It defaults to the bundle name when you load a .dingonav — use one others can't guess.
Load .gpx tracks and a heatmap .geojson (exported from Dingo). Everything is stored on this device and works fully offline.
Turn points
Offline basemap
no basemap loaded
A .pmtiles extract gives roads, trails, water and labels offline. One is auto-downloaded on first open when hosted with the app; cut other areas with the pmtiles CLI (see README).
no terrain shading loaded
Optional elevation extract adds hillshade relief under the trails — gullies and ridges readable at a glance, still flat north-up 2D. Cut one with make_hillshade.py (see README).
Shared tile cache: —
With no local .pmtiles loaded, maps come from the shared dingodirt archive: each pack's ride corridor is fetched once and cached for offline. Deleting a pack releases its tiles.
Aerial imagery (personal)
Optional {z}/{x}/{y} tile URL for the Sat map style — your device only, never part of packs. Ride corridors are cached at z12–15 for offline. The NSW button fills the Six Maps imagery service (CC BY 4.0).
No Strava tiles — include them in a .dingonav bundle from Dingo.
Fullscreen also engages automatically while navigating.
Config
The complete setup in one JSON file — settings, tuning overrides, zoom presets, screen layouts, controller keys. Export downloads the file and copies it to the clipboard; bench-tune on a desktop browser, export there, import here.
Demo replays the selected track — use it to hear the alerts before a real ride.
Bike connection
DingoNav reads the bike's Bluetooth directly — battery, speed, ride mode, blinkers, reverse/crawl and alerts.
The VIN is the bike's Bluetooth name; with it set, the pairing list shows only your bike (VargPilot lists both the VIN and the pair PIN).
After the first pairing, leave the Stark app or VargPilot connected: the bike only streams once one of them starts
the telemetry, and DingoNav rides along on the same link.
Once connected the app owns the bike's single BLE slot; tap the 🔋 pill for the full telemetry page —
releasing to the Stark app (and taking back) lives there.
Paired before? Tap Forget bike once and re-pair — older pairings only unlocked the battery feed.
Alerts
Controller buttons
Works with any Bluetooth remote that types keys (e.g. a DMD2 handlebar controller). Tap an action, then press the button on your remote. Esc while capturing clears a custom key.
Drag buttons and readouts anywhere; drag the cyan corner dot on a readout to
resize it; drop a button on the bottom tray to dock it in this menu. Saved separately for
portrait and landscape.
Tuning
Live tuning knobs — changes apply immediately and persist on this device. ↺ resets a row to default.