Add docs/roadmap.md and update CLAUDE.md

- Add docs/roadmap.md: strategic four-phase launch plan (feature complete →
  polish → beta → announce) with launch-blocking changes, post-launch backlog,
  and links to ideas/
- Update CLAUDE.md: fix stale phase-1-mvp OpenSpec reference, remove "Phase 2"
  label from Federation, add roadmap + ideas pointers, expand packages list
  with all 11 packages and accurate descriptions (including map vs. map-core
  split rationale)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-05-24 10:41:51 +02:00
parent 265cf34dc1
commit d20ec30bce
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
2 changed files with 92 additions and 3 deletions

81
docs/roadmap.md Normal file
View file

@ -0,0 +1,81 @@
# Roadmap
Strategic view of what ships when and why. For implementation detail, see the linked OpenSpec changes in `openspec/changes/`. For exploratory ideas not yet in a change, see `docs/ideas/`.
---
## Launch readiness
Five changes must ship before public announcement:
| Change | Why it blocks launch |
|---|---|
| [`route-sharing`](../openspec/changes/route-sharing/) | Visibility levels (private / public / shared-link) and forking. Federation depends on it. |
| [`social-federation`](../openspec/changes/social-federation/) | The platform is described as federated — launching without it would be misleading. ActivityPub, WebFinger, inbound Mastodon follows. |
| [`visual-redesign`](../openspec/changes/visual-redesign/) | Design system not yet implemented. Current UI is unstyled Tailwind. Must land before any public-facing announcement. |
| [`wahoo-production-cutover`](../openspec/changes/wahoo-production-cutover/) | Wahoo sandbox rate limits make the integration unusable at scale. Ops task, not a feature, but launch-blocking. |
| [`changelog`](../openspec/changes/changelog/) | Public `/changelog` is part of the launch narrative — how we communicate "here's what just shipped" to early users on day one. |
---
## Phases
### Phase 1 — Feature complete
Implement all launch-blocking changes above, in dependency order:
1. `route-sharing` (no dependencies)
2. `social-federation` (depends on route-sharing for public routes)
3. `wahoo-production-cutover` (ops, can run in parallel)
4. `changelog` (no feature dependencies)
### Phase 2 — Polish sprint
After features are stable, run a dedicated UI/UX review pass:
- Walk every user-facing flow end-to-end in a real browser
- Implement `visual-redesign` if not already complete (this change may span phases 12)
- Fix rough edges: empty states, loading states, error messages, mobile layout
- Review copy and i18n strings for consistency
- No new features during this phase — polish only
The polish sprint is its own phase because it requires a stable feature set. Polishing during active feature development is expensive churn.
### Phase 3 — Soft launch / beta
Invite 1020 real users before public announcement:
- Watch Sentry for crashes and unhandled errors
- Watch Grafana for performance regressions
- Watch for federation interop issues (Mastodon follow/unfollow, object delivery)
- Collect structured feedback on onboarding and core flows
- Fix anything critical; defer cosmetic issues to post-launch
### Phase 4 — Public announcement
Announce once beta feedback is resolved:
- Changelog entry for launch
- Social post / blog post
---
## Post-launch
These changes are scoped and designed but not blocking launch:
| Change | Notes |
|---|---|
| [`route-discovery`](../openspec/changes/route-discovery/) | Spatial map-based route exploration. The text `/explore` page covers the gap at launch. |
| [`activity-photos`](../openspec/changes/activity-photos/) | Photo uploads for activities. Enriches content but not a day-one requirement. |
| [`mobile-app`](../openspec/changes/mobile-app/) | React Native unified app. Substantial scope; explicitly post-launch. |
---
## Ideas (exploratory, not yet in a change)
See `docs/ideas/` for pre-spec explorations:
- `mobile-activity-recording/` — GPS tracking and activity logging from a native app
- `mobile-nearby-sync/` — BLE-based proximity discovery
- `self-host-overpass/` — Self-hosted Overpass API for POI overlays