Seamarks
Roadmap · open backlog
A prototype that shows its own backlog is easier to trust than one that presents itself as finished. Everything below is honest about which it is.
Live now at seamarks.app.
A picture of pale water over a reef shows what a coordinate cannot — whether it breaks, whether anything is visible. It is also easier to give than a position, and phones write down where they were standing: if you could not place the rock but photographed it, we read the location out of the file and offer it back. Private bucket, signed uploads, never published.
Given before it is earned. The first mark we accept from a base, club or owner gets them a page with their name on it and a link to their site — because the page is the ask, not the reward, and it is the first rung of the steward ladder.
Someone saying they hit something is a first-hand claim with a contactable source — often better evidence than a one-line guide entry. So a report enters the dataset immediately at `reported`, rendered thin and faint and circled, and research raises it to corroborated or locally confirmed. The tiers describe evidence, never effort. Nothing waits in an inbox to become real.
Live at /report. One required field, because a half-remembered report beats a complete one you never send. 'I cannot place it' is a first-class answer, with its own button. Nothing submitted is ever public.
Pick 'a way through' and you can draw the route on a satellite map — click, undo, clear. Stored as a real line, not a paragraph. The map finds your location or lets you search a place, because most reports get written at home after the trip rather than on the boat.
Reports go through an Edge Function that checks a Cloudflare Turnstile token server-side, then writes as a privileged role. There is no public write path at all: the table grants nothing to anonymous callers, and no read policy exists for anyone.
Positions are real geography, not two numbers — so 'what is near this point' and 'what crosses this route' are one query rather than arithmetic in application code.
Ionian and both sides of the Basque coast, compiled from prose that already existed — cruising guides, forum threads, sailing logs, spearfishing sites — in Greek, Spanish, French and Basque.
A mark is a fact and can be evidenced. A track is a practice and can only be agreed. Nothing else in this field separates them, and the track is the part that prevents the grounding.
Real OpenStreetMap coastline. Where someone told us the way in, both routes are drawn and the one that grounded stops at the rock.
Seven hazards have a position a source published; they get a pin. Fourteen do not and are drawn as a circle of approximation. A guard fails the build if any hazard plots on land.
A split browser, a printable brief that needs no signal, long-form pages with satellite and provenance, and a full-screen chart.
Any record can be emitted as a hydrographic note and an S-124 shaped payload — the format the receiving office already ingests. It refuses to emit a position we only approximated.
The research workup that turned one grounding into 21 hazards, written down so the next spot gets the same treatment: local language first, search for fear not nouns, never infer a position.
The contribution loop. Nothing here needs new research — only building.
Everything is built. What has not happened yet is the whole point: somebody who is not us sending something we can stand behind.
Real, but not until the loop above is turning.
Right now a report vanishes into a private inbox, which is honest but one-sided. A link back to 'here is what became of what you sent' would be the difference between a form and a contribution.
Magic links, not passwords. Enough identity to stop someone corroborating their own report and to weight repeat contributors. Raising a hazard takes one report; retiring one takes three and a steward — deliberately asymmetric.
Geography-scoped and named: a charter base, a harbourmaster, a cofradía, a dive club. Verified by a phone call, not a document upload. Their name on the page is the accountability.
Everything so far is place-first. A delivery skipper is route-first: draw the passage, get the hazards within a mile of it in the order you will meet them.
A boat in a Greek bay has no signal. PMTiles and a service worker, so the whole cruising area is downloaded before departure.
Official navigational warnings as a discovery source — never mirrored as content, because they expire and seamarks do not. When a warning says an uncharted rock was reported, that is a lead.
Not code. Conversations and applications, which are slower and matter more.
They open-sourced PING's backend and say the platform offers data services for integration into navigation software. The running instance is not publicly reachable. One email; worst case they say no, best case a standards-based feed and a working relationship with a national hydrographic office.
shom.fr
The IHO already accepts crowdsourced bathymetry through approved organisations, and B-12 states contributors are not liable for what they submit. Standing, a liability precedent, and a route into official charts.
iho.int
The test that decides everything: would you hand this to a customer at the briefing? If they shrug, the data quality does not matter.
If groundings are a top loss line and they price them separately, there is a second buyer who is not the sailor.
Seamark Systems and Seamark Group both exist. Neither is software in this space. Five minutes now is cheaper than a rebrand later.
Missing a hazard, a language, a source we should be reading, or a feature you would use? Say so. Feature ideas are public and welcome; reporting an actual rock is different — that will get its own private form, because admitting a grounding should not be a public act.