Slab Steward
| SLAB Steward | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Author: | Danny Godbout | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| License: | MIT License | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Platform: | Web | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Status: | Active | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Version: | 0.1.0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Language: | English
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Website: | https://slab-steward.web.app | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Source code: | https://github.com/DannyGsGit/slab-steward | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Programming language: | Dart | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
A guided browser editor for trail difficulty and e-bike access, aimed at riders and walkers who know the trail but not the tagging. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SLAB Steward is a browser editor for one job: adding Mountain Bike tags including mtb:scale:imba=* difficulty and electric_bicycle=* access to trails that are missing them.
The experience is intentionally simplified to make it easy for riders to enrich their home trails. Users pick the difficulty symbol as it would be shown on a trailhead sign, Slab Steward translates to the correct tag.
Edits go through user's own OSM account via OAuth 2.0, no shared or bot accounts are used.
Try it at: slab-steward.web.app
What it edits
Metadata on existing trail ways. Steward cannot draw a trail, move a node, split a way, add a POI, or edit a relation. Sensitive tags representing sanctioned status are also scoped out.
Difficulty
Writes mtb:scale:imba=* only, using the IMBA circle/square/diamond
signage scheme:
| Picker label | Symbol | Tag written |
|---|---|---|
| Beginner | purple circle | mtb:scale:imba=0
|
| Easy | green circle | mtb:scale:imba=1
|
| Medium | blue square | mtb:scale:imba=2
|
| Difficult | black diamond | mtb:scale:imba=3
|
| Expert | double black diamond | mtb:scale:imba=4
|
mtb:scale=*support in development for regions outside North America.
E-bike access
Writes electric_bicycle=* (equivalent to US Class 1 or Pedelec), yes/no only:
| Slab option | What it claims | OSM |
|---|---|---|
| Allowed | E-bikes may ride here, same as any other bike. | electric_bicycle=yes
|
| Not allowed | E-bikes are shut out, regardless of regular bikes. | electric_bicycle=no
|
Only yes/no designation for Class 1/Pedelec supported today. More powerful classes in work.
If a way already carries one of those values, Steward leaves it alone and the picker becomes read-only.
Planned
surface=*, oneway=*, smoothness=*, width=*, incline=*
are out of scope for now but may incrementally be added.
How it works
- Discover. Map colors trails by whether the attribute you're working on is present or missing. Filter by travel mode and completeness.
- Select. Click a trail, ctrl/cmd-click to add more, ctrl/cmd-drag to box-select, or tick trails from a list.
- Edit. Pick a value per attribute. Nothing is sent yet — changes stage locally, with undo.
- Review. Every staged change, in plain language and as the literal tag diff. A real changeset comment is required before submit unlocks.
- Submit. A changeset is created, all changes validated against API pulls, uploaded atomically, closed, and linked back to osm.org. All uploads tied to user's OSM account.
Validation
Steward reads current tags and version from the OSM API before it lets you edit, rather than rely on map tiles which lag the database by days. A final validation check is also executed on submission of a changeset to avoid conflicts.
Editing against stale tile data risks a version conflict or silently overwriting someone else's edit.
Changesets
Every changeset carries:
| Tag | Value |
|---|---|
created_by=* |
SLAB Steward/version, e.g. SLAB Steward/0.1.0
|
comment=* |
written by the contributor, required, more than one word |
hashtags=* |
#slabsteward
|
host=* |
https://slab-steward.web.app
|
locale=* |
the contributor's UI language, e.g. en-US
|
review_requested=* |
yes, only if the contributor asks for review
|
#slabsteward is added automatically if missing, so the corpus of
Steward edits is queryable in OSMCha.
The comment is never auto-generated. Steward requires the contributor to
write one, and rejects update, fix, or a full stop.
Data sources
| What | Source |
|---|---|
| Basemap style | OpenTrailMap's published MapLibre stylesheet |
| Trail discovery layer | OpenStreetMap US's vector tileset, used under its usage policy |
| Authoritative tags, geometry, version | OSM API v0.6, read fresh on every selection |
| Sign-in and writes | OAuth 2.0 with PKCE against openstreetmap.org, under the contributor's own account |
No external or automated data is imported into OSM. Every value is hand picked.
Rendering
Map styling follows OpenTrailMap's
conventions rather than inventing new ones: solid lines for official trails,
dashed for informal=yes, pale with no-entry symbols where the
selected travel mode isn't allowed.
A completeness lens colors trails teal (attribute present) or magenta (missing), i.e. magenta is the to-do list.
One departure: trails that disallow the selected travel mode stay visible, drawn pale, instead of hidden, to remain clickable to fix their tags.
Because the tileset lags the database, a trail you just edited would draw as unrated until the next tile build. Steward keeps a local overlay of tags newer than the tiles and restyles those trails until the tileset catches up.
Limitations
- Existing trail ways only. No create, delete, split, reshape, or relation editing.
- Two attributes only today: difficulty and e-bike access.
- No OSM Notes support (yet!).
- Online only, no offline editing or local cache.
- Web only, mobile planned for later.
- English only.
For anything outside that, Steward links out to iD ways instead of growing a general-purpose editing mode.
See also
- Editors — comparison of OpenStreetMap editors
mtb:scale:imba=*,mtb:scale=*,surface=*,informal=*,electric_bicycle=*