trails/openspec/changes/journal-route-previews/specs/route-preview/spec.md
Ullrich Schäfer 6aac8bd885
Add map previews to journal route and activity pages
- Route/activity list pages: map thumbnails with route drawn on OSM tiles
- Route/activity detail pages: interactive Leaflet map with zoom controls
- Server: expose GeoJSON from PostGIS via ST_AsGeoJSON (simplified for lists)
- RouteMapThumbnail component: shared, supports thumbnail and interactive modes
- Placeholder shown for routes/activities without geometry
- Archive journal-route-previews change, sync specs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 09:42:07 +01:00

1.5 KiB

ADDED Requirements

Requirement: Route map preview on list pages

Route and activity list pages SHALL show a small map thumbnail for each item that has geometry.

Scenario: Route with geometry

  • WHEN the routes list page loads and a route has a geom column
  • THEN a small map thumbnail is rendered showing the route path
  • AND the map auto-fits to the route bounds

Scenario: Route without geometry

  • WHEN a route has no geom (legacy route)
  • THEN a placeholder is shown instead of a map thumbnail

Scenario: Activity with geometry

  • WHEN the activities list page loads and an activity has a geom column
  • THEN a small map thumbnail is rendered showing the activity path

Requirement: Interactive map on detail pages

Route and activity detail pages SHALL show an interactive read-only map with the route/activity drawn.

Scenario: Route detail with geometry

  • WHEN a user views a route detail page and the route has geometry
  • THEN a full-width interactive map is shown with the route path
  • AND the map has zoom controls and layer switching
  • AND the map auto-fits to the route bounds

Scenario: Activity detail with geometry

  • WHEN a user views an activity detail page and the activity has geometry
  • THEN a full-width interactive map is shown with the activity path

Scenario: Detail page without geometry

  • WHEN a route or activity has no geometry
  • THEN no map section is rendered