Skip to content

9. Architecture decisions

Last reviewed: 2026-11-03

Important decisions, with their reasons. Each decision is an ADR: append-only, numbered, with context, decision and consequences. Every ADR must be listed here (mise doccheck fails otherwise). New ADRs also name the quality goals they affect.

ADR Decision
001 API Middleware Architecture and Open-Meteo Tide Prediction Proxy
002 Maritime Location Naming Convention and Island Priority Rules
003 Device Registration, Pairing Protocol, and Security Controls
004 Own map tiles from a monthly Protomaps extract in Cloudflare R2
005 Depth layer from the EMODnet DTM, built and served like the map tiles
006 No request from the watch before consent on the watch
007 Stored, simplified map lines and a browser cache for the trip page
008 Depth with the coastline as 0 m, built on a worker VM
009 Engine or sail from the track, as a suggestion the skipper corrects
010 Trips are private, shared by expiring links; crew join read-only (amended 2026-10-26: trip roles)
011 Every job on the worker VM, by priority
012 Admins are users
013 Our own OpenStreetMap places in PostGIS, refreshed on demand
014 Link preview images drawn by headless Chromium in the jobs role
015 Every record id from a request goes through an access scope
016 A per-trip points endpoint for the trip replay, for crew and public links too
017 Track points as one 5 s file per track in object storage, no original files
018 Wear OS track map from SailEver tiles
019 Public skipper profile
020 Everyone on board invites crew