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

34 lines
1.5 KiB
Markdown

## 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