Beach access rights, routes to shore, and the evidence behind them.
OpenCoast is an open-source web app for mapping community-reviewed information about public beach access and coastal access rights. People can draw coastal areas, paths to the shore, and access points; add descriptions, local conditions, and sources; and submit them anonymously. Moderators review each proposal before it appears on the public map.
Explore the map · Contribute · How review works · Development guide · Roadmap
Early-stage project. The map supports worldwide navigation and submissions; reviewed information grows place by place. An unmarked coast means no reviewed access information yet. It never means that access is forbidden or guaranteed.
Finding a beach on a map leaves several questions unanswered: What access is permitted? What conditions apply? Is there a reviewed route to reach it? Which sources support that information, and when were they checked?
OpenCoast brings those questions into one map. Each record ties a specific location to a description, jurisdiction, access status, evidence label, and review history. The project is useful to residents, coastal visitors, community mappers, source researchers, and developers building public-interest mapping tools.
Created by Kristofer Jussmann (Ker102), OpenCoast began with concerns about coastal access in Montenegro. Its scope is global; the first Montenegro records are a source-review effort, not a preloaded set of legal conclusions.
| Record type | What it describes | Why it is separate |
|---|---|---|
| Access area | A beach, foreshore, or other defined coastal area | Conditions can apply to a particular area rather than an entire coastline. |
| Route to shore | A path, entrance route, or coastal way | An area's access status does not establish permission to cross the land leading to it. |
| Access point | An entrance, gate, sign, or other relevant location | A precise point can explain where an access condition or observation applies. |
Records can include local categories, allowed activities, conditions, source links, and observations. A leased beach or concession can be described with its specific conditions and evidence; OpenCoast does not assume that one label determines every right at that location.
- A responsive global map: browse in a desktop or mobile browser, with an OpenStreetMap-derived basemap supplied by OpenFreeMap.
- A terrain Focus view: neutral land colors and hillshade keep the coastline readable while reviewed access areas, routes, and points stand out.
- Precise drawing tools: draw and edit points, lines, and polygons, adjust vertices, undo changes, and review geometry before submitting.
- Anonymous contributions: submit information or corrections without creating an account. Save a private receipt link to follow the review and answer moderator questions.
- Evidence and dates: records distinguish access status from evidence strength and show edit dates separately from source-review dates.
- Moderated publication: moderators can request clarification, edit wording with an audit reason, approve or reject proposals, and inspect private evidence. Published records have revision histories.
- Reviewed area-to-route links: moderators can link a coastal area to separate approach-route records. A verified land-route label depends on the linked route's current visibility, evidence, and access status.
| Status | Meaning in OpenCoast |
|---|---|
| Allowed | The reviewed claim describes access as permitted within the record's scope. |
| Conditional | The record describes access subject to stated limits or conditions. |
| Restricted | The record describes a restriction on access. |
| Disputed | The claim is contested or credible evidence conflicts. |
| Unknown | The available information does not establish the applicable access rule. |
Read the description and conditions alongside the status. An access label is a reviewed claim with a defined scope, not a guarantee for every activity or date.
Document backed means a moderator checked at least one linked official source against the claim and geometry. The explanation should identify what the source supports and any remaining uncertainty.
Community reviewed, no official source verified means a moderator approved the information for display without verifying an official source. These records carry a visible label; they must not be read as legally verified access rights.
Hand-drawn boundaries are labeled approximate. An edit date does not imply a new legal-source review. Read the moderation policy for the full review standard.
- Find the location in the live map. Pan and zoom, or enter
latitude, longitude; place-name search is planned. - Choose Add information and draw an area, route, or point. Existing records also accept proposed corrections.
- Describe the claim: include the jurisdiction, local category where useful, conditions, and what you observed or read.
- Add sources and evidence. Official documents and direct links are strongly encouraged, but they are optional. Original uploads are private to moderators; only separately approved images with publication consent can appear publicly.
- Save the private receipt link. A moderator reviews the proposal and may ask for clarification before publication.
Coastal access reports belong in the app's review workflow. Use GitHub issues for software bugs, documentation, and feature proposals. See the contribution guide for both paths.
OpenCoast supports a worldwide map and contributions from different jurisdictions. Coverage depends on submitted and reviewed records, and some published records have no verified official source. It is an early-stage information project, not a complete legal database or legal authority.
No. It means there is no reviewed access information displayed there. The basemap's parks, roads, beaches, and land colors are geographic context; they are not OpenCoast access claims.
Yes. Public submissions do not require an account, and official sources are encouraged rather than mandatory. Every submission still requires moderator review. If an official source has not been verified, the published record says so.
The beach area and route are reviewed as separate records. A moderator must explicitly link them after checking the geometry and sources. OpenCoast does not infer an access route because a nearby road or path appears to reach the beach.
No. OpenCoast stores its reviewed access records in its own database. OpenFreeMap provides the OpenStreetMap-derived background map. Submissions here are not automatically written to OpenStreetMap.
The software is open source under the MIT license. Approved records in the hosted database do not yet have an open-data license; obtain permission before redistributing them. Private evidence and third-party source material have separate rights. See licensing and attribution.
Yes, through its responsive web interface. Drawing is designed for touch as well as desktop input. There is no native mobile app yet, and real-device testing and accessibility review remain active work.
Contributions are useful across several areas:
- Local knowledge and source research: submit carefully scoped records and corrections through the map. Include relevant provisions, source dates, and uncertainty.
- Mapping and user experience: improve drawing, navigation, readable legends, keyboard access, and touch interaction.
- Software and infrastructure: help with geospatial queries, moderation tools, evidence handling, testing, and deployment reliability.
- Documentation: improve explanations and developer onboarding. Translations and localization proposals are welcome.
Read CONTRIBUTING.md, browse open issues, or propose an improvement. Report security concerns through private vulnerability reporting.
| Layer | Implementation | Location |
|---|---|---|
| Web interface | React, TypeScript, Vite, MapLibre GL JS, Terra Draw | web/ |
| API and moderation | Fastify, TypeScript, private evidence handling | api/ |
| Data contracts | Zod schemas and GeoJSON types | shared/ |
| Spatial storage | PostgreSQL and PostGIS; hosted on Supabase | api/db/ |
| Hosting and evidence | Vercel web/API projects; private Cloudflare R2 storage | infra/ |
The current CI uses Node.js 24. Install Node.js 24+, npm, and Docker, then:
git clone https://github.com/Ker102/opencoast.git
cd opencoast
npm ci
docker compose up -d
npm run db:migrate
npm run devOpen http://localhost:5173. Local databases start with zero asserted access records. The development guide covers environment settings, ports, local uploads, and creating a moderator account.
See validation commands and the isolated database integration test.
See Vercel, Supabase/PostGIS, and private Cloudflare R2 configuration.
The current implementation supports reviewed publication, but several tasks remain before broad promotion: upload and abuse-control hardening, real-device touch and accessibility testing, independent source review for the first Montenegro records, and place-name search.
No jurisdiction-wide law is automatically applied to beaches. A reported obstruction and a documented legal right are separate claims. OpenCoast's records explain the evidence reviewed; they do not replace the source documents or establish legal boundaries.
See the project design and progress tracker. Images in docs/design-reference are visual concepts with fictitious example claims; they are not map data.
- Software: MIT, permitting use, modification, and redistribution under its terms.
- Hosted access records: operator-controlled, with no open-data license yet. Discuss reuse with the maintainer.
- Evidence and source documents: retain their own rights and publication restrictions. Uploaded originals are private.
- Basemap and terrain: attribution to OpenStreetMap, OpenFreeMap, OpenMapTiles, and Mapterhorn remains visible in the map as applicable.
For articles, research, or software reuse, link to OpenCoast on GitHub and use CITATION.cff for software citation details. Citing the software does not verify any particular coastal access claim.
Project overview last reviewed: 2026-09-28.