Adds ChatMessage and Goal DB models, five new API endpoints
(/api/chat/history, /api/chat, /api/goals CRUD), and a Trainer panel
in the SPA with streaming chat, goal management, and ride-aware context.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Three-panel desktop layout becomes a tab-based single-panel view on mobile
with Rides/Map/Details bottom nav. Tapping a ride auto-navigates to the map.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Auth via Authelia OIDC (public client + PKCE) with signed session cookies
- SQLite DB for users, rides, and insights (SQLAlchemy)
- Garage S3 for GPX file storage (boto3)
- All API endpoints scoped to authenticated user
- Dockerfile + docker-compose.yml with Garage service
- Frontend auth check: redirects to /auth/login on 401, shows user badge
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>