Skip to content

SailCommand 0.1.0 — MVP

Choose a tag to compare

@DocGerd DocGerd released this 16 Jul 09:16

First release of SailCommand — an offline-capable PWA that plans time-optimal sailing routes for a Salona 45 in the Flensburg Fjord / Danish South Sea area (54.3–55.3°N, 9.4–11.0°E), using hourly Open-Meteo wind forecasts and an isochrone router that prices tacks/gybes as time penalties.

Live: https://docgerd.github.io/sail_command/

⚠️ SailCommand is a passage-planning aid, not a navigation device. It has no chart authority — always navigate with official charts and publications.

Highlights

  • Isochrone router over a real land/depth mask (~100 m cells) with query-time safety depth (default 3.0 m, boat draft 2.1 m) — changing safety depth never requires regenerating data
  • Runs twice per plan (main+genoa, main+fock) and recommends the faster rig; both results visible
  • Motor legs are first-class: planned below the sailing-speed threshold (default 2.5 kn) at motor speed (default 6.5 kn), always flagged
  • Tack/gybe minimization emerges from a maneuver time penalty (default 45 s) inside the cost function — no post-hoc route surgery
  • Wind grids are stored with each plan (IndexedDB): a saved route always renders against the forecast it was computed from
  • Curated harbor list with pilotage notes, de/en i18n, full offline operation after first load (service-worker precache incl. PMTiles basemap with Range/206 support)

Things to know

  • ~44 MB first load — the offline precache includes the regional basemap, land/depth mask, and polars. Wi-Fi recommended for the first visit.
  • Polar tables are VPP estimates for a Salona 45 (main+genoa / main+fock), not measured performance.
  • Planning requires network (Open-Meteo, called directly from the browser); everything else works offline.
  • Deploys are gated by the build only until #15 lands required status checks.
  • No LICENSE yet (#11) — all rights reserved until a license is chosen.

Known limits

  • Some harbors are excluded from routing by the mask connectivity gate (#9: Arnis, Kappeln, Maasholm, Dyvig, Gråsten); Flensburg→Marstal routes only at safety depth ≤ 2.3 m (correct data behavior, documented).
  • Language is applied at load; switching updates the UI but document metadata follows on next load.
  • First visit on a warm GitHub-Pages edge can show a broken basemap until the service worker takes over (#27, self-heals); on slow connections the first offline-cache install may need a second visit to complete (#28).
  • Currents/waves (#18) and multi-day trips (#19) are future features.