FairwayMapper

From OpenStreetMap Wiki
Jump to navigation Jump to search
FairwayMapper
v · d 
Author: FairwayMapper/fairwaymapper/graphs/contributors GitHub
License: TBD (free of charge)
Platform: Web
Status: Active
Version: 1.0 [1] (2026-07-10)
Languages:
English and multiple languages
Website: fairwaymapper.com
Source code: FairwayMapper/fairwaymapper GitHub
Programming language: JavaScript

FairwayMapper is a focused editor for golf courses.

Features
Feature Value
Map Display
?
Routing
?
Navigating
?
Tracking
?
Monitoring
Monitoring
?
Show current track
?
Open existing track no
Altitude diagram
?
Show POD value
?
Satellite view
?
Show live NMEA data
?
Show speed
?
Send current position
?
Editing
Add POIs yes
Edit / Delete POIs yes
Add way yes
Edit geometries yes
Edit arbitrary tags of existing OSM objects yes
Edit relations no
View notes no
Create notes no
Edit notes no
Work offline
?
Support imagery offset DB no
Upload to OSM yes
Rendering
?
Accessibility
?


FairwayMapper is an in-browser app used to edit the OpenStreetMap, with a specific intent and focus on the parent Tag:leisure=golf_course and any commonly tagged elements held within the facility boundary.

The app aims to abstract many of the tagging norms allowing inexperienced mappers to get started mapping their favourite golf courses accurately and quickly.

How to use it

Community Chats

Discord server

Technical

Frontend A single-page React application built with Vite and served as a static site. It ships as a Progressive Web App with a service-worker cache layer (Workbox) and is localized into 12 languages via react-i18next.

The 2D editor renders with MapLibre GL and uses Mapbox GL Draw extended with custom drawing modes (snapping, follow-line tracing, shape tools) to trace golf features — fairways, greens, tees, bunkers, water and lateral water hazards, roughs, holes and centre lines. Satellite/aerial imagery is used as the tracing basemap.

A separate 3D course viewer is built on Three.js. It composites OSM golf geometry with elevation data into an interactive terrain model, letting mappers visualize a course and spot what's still missing.

Backend: Server-side services run on Supabase: a PostgreSQL database, authentication, Deno-based Edge Functions, and Realtime subscriptions. Postgres holds application data only — cached course/club metadata, per-user edit drafts, a publish log, achievements and precomputed statistics — never as a substitute for OSM.

Edge Functions handle asynchronous work such as change notifications, club-identity reconciliation, scheduled maintenance jobs, and scorecard/assistant helpers.

Read traffic for golf data is served by a self-hosted, planet-wide Overpass API mirror running behind an OpenResty edge and fronted by CDN protection at api.fairwaymapper.com. The mirror powers the app and is also offered to the wider community, with free API keys for active OSM contributors.

OSM Authentication & Integration: Users sign in with their OpenStreetMap account via OAuth 2.0.

Editing affordances are gated behind that sign-in, and all writes go to the main OSM API (v0.6) under the signed-in user's account — FairwayMapper never edits on a mapper's behalf, so attribution and edit history stay entirely with the contributor.

Every changeset is tagged created_by=FairwayMapper.com and host=<origin> so edits are transparent and easy to review. The client estimates the user's remaining OSM API upload budget, runs a pre-flight check before publishing, and backs off gracefully on rate-limit responses.

Data pipeline: On the read path, golf features are queried from the Overpass mirror and assembled client-side into the 2D and 3D scenes. On the write path, edits are staged as drafts in Postgres and then published as an osmChange changeset to the OSM API under the user's account, with each publish recorded in a per-course log.

Because the Overpass mirror ingests OpenStreetMap minutely delay, the app compares a course's most recent publish time against the mirror's data timestamp and briefly gates re-editing until the mirror catches up — avoiding edits against stale data or accidental duplication.

A club-identity reconciliation step keeps app records aligned with the correct OSM element, including upgrading node-only entries to their containing course polygon via point-in-polygon matching. Separately, a periodic aggregation over the mirror produces the global golf-mapping statistics (course counts, feature and tag completeness) shown on the public stats page, and published changesets are surfaced to the community via a notification feed.

Contributions are very warmly welcomed. Currently User:HuggeK and others are contributing.

Project history

It was announced on the Community forum, FairwayMapper - introducing golfers to mapping! that the development had started, April 3 2026.

Alpha and beta

The history and flow of the Alpha phase including community feedback, response and iteration are all documented on the aforementioned community forum post.

Version 1 onward

On July 10, 2026 version 1.0 was released.

Press coverage

Further reading

See also

External links

References