Skip to content

AIS: live online traffic overlay with ownship recognition #25

Description

@DocGerd

User request (2026-07-16), future scope: integrate live online AIS data to show surrounding vessel traffic, including recognizing ownship.

Scope

  • Traffic overlay on the map (primarily in the Live tab, optionally while planning): vessel positions with COG vectors, heading, name/MMSI/type/speed on tap; targets age out when stale (AIS updates are irregular); declutter at low zoom.
  • Ownship recognition: user enters their MMSI in settings → own vessel is filtered out of the traffic layer (no ghost duplicate next to the GPS boat marker) and can optionally cross-check the AIS-reported position/SOG/COG against device GPS in the Live view.
  • Explicitly a live-online feature: AIS is inherently network-dependent. It must degrade exactly like planning does (feature disabled + honest banner when offline) and must never break the offline core (repo rule: everything except planning — and now AIS — keeps working offline).

Constraints to resolve during design

  • No-backend rule: candidate sources that work browser-direct: aisstream.io (WebSocket, free but requires a per-user API key — store the key in settings, entered by the user, never shipped in the repo), AISHub (requires being a feed contributor), regional open feeds (Danish/German coverage needs evaluation for the Flensburg Förde / Danish South Sea area). WebSocket avoids CORS issues. If NO keyless/user-key browser-direct source covers the area acceptably, this feature forces a design discussion (proxy = backend = currently forbidden) — surface that trade-off to the owner rather than deciding silently.
  • Not a navigation device: traffic display must carry the existing disclaimer framing prominently. NO collision-avoidance features (CPA/TCPA alarms) in this issue's scope — that would cross into navigation-device territory; if ever wanted, it needs its own spec discussion.
  • Battery/data budget: WebSocket stream filtering to the visible bbox; pause when the tab/app is hidden.
  • Privacy note: entering an MMSI identifies the user's vessel — keep it local (IndexedDB settings), never transmitted anywhere except the AIS provider's subscription filter.

Interactions

Future scope — after 0.1.0; needs a short spec addendum + owner approval before implementation (data-source choice is the key decision).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions