trails/apps/journal/app/routes
Ullrich Schäfer b6711d23d6
Add Wahoo activity sync with provider-agnostic framework
Provider-agnostic sync framework + Wahoo as first implementation:

Framework (apps/journal/app/lib/sync/):
- SyncProvider interface for OAuth2, webhooks, import, conversion
- Provider registry for settings UI iteration
- Generic sync_connections + sync_imports tables
- Token storage with auto-refresh

Wahoo provider:
- OAuth2 with workouts_read, user_read, offline_data scopes
- Webhook-based auto-import (workout_summary events)
- Manual import page with pagination
- FIT→GPX conversion via fit-file-parser
- Webhook token verification

Routes:
- /api/sync/connect/:provider — OAuth redirect
- /api/sync/callback/:provider — OAuth callback
- /api/sync/disconnect/:provider — remove connection
- /api/sync/webhook/:provider — webhook receiver
- /sync/import/:provider — manual import page

Settings: Connected Services section with per-provider connect/disconnect

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 11:22:02 +01:00
..
activities.$id.tsx Add map previews to journal route and activity pages 2026-04-04 09:42:07 +01:00
activities._index.tsx Add map previews to journal route and activity pages 2026-04-04 09:42:07 +01:00
activities.new.tsx Implement Journal activity feed (Group 10) 2026-03-24 23:20:04 +01:00
api.auth.login.ts Add transactional emails (SMTP) and planner features (no-go areas, notes, crash recovery) 2026-03-26 01:00:42 +01:00
api.auth.register.ts Passkey browser compatibility: detect support, magic link fallback 2026-03-29 09:54:37 +02:00
api.health.ts Add version (git SHA) to health endpoints 2026-03-27 20:48:27 +01:00
api.metrics.ts Add observability: health endpoints, structured logging, metrics, Grafana stack 2026-03-26 22:59:44 +01:00
api.routes.$id.callback.ts Fix CORS on Planner→Journal callback endpoint 2026-03-25 01:16:32 +00:00
api.routes.$id.edit-in-planner.ts Initialize no-go areas client-side via URL params 2026-04-03 12:47:40 +01:00
api.routes.$id.gpx.ts Fix GPX export: use API route with direct download link 2026-03-24 20:22:58 +00:00
api.settings.delete-account.ts Add account settings page with passkey management 2026-03-29 10:09:06 +02:00
api.settings.email.ts Add account settings page with passkey management 2026-03-29 10:09:06 +02:00
api.settings.passkey.delete.ts Add account settings page with passkey management 2026-03-29 10:09:06 +02:00
api.settings.profile.ts Add account settings page with passkey management 2026-03-29 10:09:06 +02:00
api.sync.callback.$provider.ts Add Wahoo activity sync with provider-agnostic framework 2026-04-04 11:22:02 +01:00
api.sync.connect.$provider.ts Add Wahoo activity sync with provider-agnostic framework 2026-04-04 11:22:02 +01:00
api.sync.disconnect.$provider.ts Add Wahoo activity sync with provider-agnostic framework 2026-04-04 11:22:02 +01:00
api.sync.webhook.$provider.ts Add Wahoo activity sync with provider-agnostic framework 2026-04-04 11:22:02 +01:00
auth.login.tsx Passkey browser compatibility: detect support, magic link fallback 2026-03-29 09:54:37 +02:00
auth.logout.tsx Implement Journal auth: passkeys + magic links, no passwords 2026-03-23 17:38:46 +01:00
auth.register.tsx Passkey browser compatibility: detect support, magic link fallback 2026-03-29 09:54:37 +02:00
auth.verify.tsx Add account settings page with passkey management 2026-03-29 10:09:06 +02:00
home.tsx Only show add-passkey prompt when user has no passkeys 2026-03-29 10:50:30 +02:00
privacy.tsx Add transactional emails (SMTP) and planner features (no-go areas, notes, crash recovery) 2026-03-26 01:00:42 +01:00
routes.$id.edit.tsx Implement Journal route management (Group 8) 2026-03-23 22:25:10 +01:00
routes.$id.tsx Add map previews to journal route and activity pages 2026-04-04 09:42:07 +01:00
routes._index.tsx Add map previews to journal route and activity pages 2026-04-04 09:42:07 +01:00
routes.new.tsx Implement Journal route management (Group 8) 2026-03-23 22:25:10 +01:00
settings.tsx Add Wahoo activity sync with provider-agnostic framework 2026-04-04 11:22:02 +01:00
sync.import.$provider.tsx Add Wahoo activity sync with provider-agnostic framework 2026-04-04 11:22:02 +01:00
users.$username.tsx Implement Journal auth: passkeys + magic links, no passwords 2026-03-23 17:38:46 +01:00