trails/openspec/changes/journal-poi-details/proposal.md
Ullrich Schäfer a44beb87ef
Update route-coloring spec with all 10 modes, create follow-up changes
Spec updates:
- route-coloring: Added speed limit, smoothness, track type, cycleway,
  and bike route modes. Added OSM wiki links, BRouter profile patching,
  dropdown order, bike route human-readable legends.

New follow-up changes (proposals only):
- elevation-map-interaction: Bidirectional chart ↔ map interaction
  (route hover → chart, chart click → pan, chart drag → zoom)
- e2e-test-reorganization: Mock BRouter by default, split tests by
  feature, shared helpers
- journal-poi-details: Surface POI metadata in Journal route detail
  (phone, address, website, opening hours from snapped waypoints)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 11:20:17 +02:00

1.2 KiB

Why

Waypoints snapped to POIs in the Planner store OSM metadata (osmId, phone, address, website, opening hours) on the Yjs Y.Map. This data travels through GPX export and Journal save but is never displayed. When planning a multi-day bike tour, seeing campsite contact details, water point locations, or bike shop opening hours on the Journal route detail page would be valuable.

What Changes

  • GPX export with POI metadata: Include osmId and key tags as GPX waypoint extensions so they survive the GPX roundtrip
  • Journal route detail: Show POI details (phone, address, website, opening hours) for waypoints that have POI metadata
  • Journal waypoint list: Display POI icons and names alongside waypoint coordinates

Capabilities

Modified Capabilities

  • gpx-export: Waypoint extensions for POI metadata
  • journal-route-detail: POI details display for waypoints
  • route-management: Store and retrieve POI metadata

Impact

  • packages/gpx/src/generate.ts: Add GPX extensions for POI tags
  • packages/gpx/src/parse.ts: Parse POI extensions back
  • apps/journal/app/routes/routes.$id.tsx: Display POI details per waypoint
  • @trails-cool/types: Extend Waypoint type with optional POI fields