42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
---
|
|
id: task-1
|
|
title: Implement navigation routes
|
|
status: Done
|
|
assignee: [@claude]
|
|
created_date: '2025-12-15 19:37'
|
|
completed_date: '2025-12-28'
|
|
labels: [feature, navigation]
|
|
dependencies: []
|
|
priority: high
|
|
---
|
|
|
|
## Description
|
|
|
|
<!-- SECTION:DESCRIPTION:BEGIN -->
|
|
Add routing between participants and waypoints using c3nav for indoor routes and OSRM/GraphHopper for outdoor routes
|
|
<!-- SECTION:DESCRIPTION:END -->
|
|
|
|
## Implementation Notes
|
|
|
|
### Components Added
|
|
- `/api/routing/route.ts` - API endpoint for route calculation
|
|
- `RouteOverlay.tsx` - Map overlay component for visualizing routes
|
|
- `NavigationPanel.tsx` - UI panel for selecting navigation targets
|
|
|
|
### Features Implemented
|
|
- **Outdoor routing**: Uses OSRM public API for walking/driving routes
|
|
- **Indoor routing**: Integrates c3nav API for CCC venue navigation
|
|
- **Mixed routes**: Handles transitions between indoor/outdoor
|
|
- **Route visualization**: GeoJSON line layer on MapLibre GL map
|
|
- **Navigation UI**: Click on participant/waypoint to get directions
|
|
- **State management**: Route state integrated into Zustand store
|
|
|
|
### Technical Details
|
|
- Route segments are typed as `outdoor`, `indoor`, or `transition`
|
|
- Distance/time estimates calculated from OSRM and c3nav responses
|
|
- Route line rendered with outline for visibility
|
|
- Map auto-fits to route bounds when calculated
|
|
|
|
### Commit
|
|
`a6c124c` - feat: Add navigation routes feature with indoor/outdoor routing
|