Merge branch 'main' into fix/journal-audit-7-8-helpers
This commit is contained in:
commit
951d2a507a
3 changed files with 96 additions and 5 deletions
14
CLAUDE.md
14
CLAUDE.md
|
|
@ -9,7 +9,9 @@ trails.cool is a federated, self-hostable platform for outdoor enthusiasts with
|
|||
|
||||
Full architecture: `docs/architecture.md`
|
||||
Philosophy: `docs/philosophy.md`
|
||||
OpenSpec change: `openspec/changes/phase-1-mvp/`
|
||||
Roadmap: `docs/roadmap.md`
|
||||
Ideas (pre-spec explorations): `docs/ideas/`
|
||||
OpenSpec changes: `openspec/changes/`
|
||||
|
||||
## Principles
|
||||
|
||||
|
|
@ -25,7 +27,7 @@ OpenSpec change: `openspec/changes/phase-1-mvp/`
|
|||
- **Frontend**: React + Tailwind CSS + React Router 7 (Remix stack)
|
||||
- **Maps**: Leaflet + OpenStreetMap tiles
|
||||
- **CRDT**: Yjs + y-websocket (Planner only)
|
||||
- **Federation**: Fedify (Journal only, Phase 2)
|
||||
- **Federation**: Fedify (Journal only)
|
||||
- **Database**: PostgreSQL + PostGIS
|
||||
- **Media storage**: S3-compatible (Garage)
|
||||
- **Routing engine**: BRouter (Java, runs as separate Docker container)
|
||||
|
|
@ -41,9 +43,15 @@ apps/
|
|||
packages/
|
||||
types/ — Shared TypeScript interfaces (Route, Activity, Waypoint)
|
||||
ui/ — Shared React components (Tailwind)
|
||||
map/ — Leaflet map wrappers and tile layer configs
|
||||
map/ — React/Leaflet components (MapView, RouteLayer); re-exports map-core
|
||||
map-core/ — Framework-free map constants (colors, tiles, POI, z-index, snap); safe to import server-side
|
||||
gpx/ — GPX parsing, generation, validation
|
||||
fit/ — FIT file generation (Wahoo route push)
|
||||
i18n/ — react-i18next config + translations
|
||||
api/ — Shared API contracts (endpoints, pagination, error types, versioning)
|
||||
db/ — Drizzle schema, database client, migration helpers
|
||||
jobs/ — pg-boss setup, worker, and background job types
|
||||
sentry-config/ — Shared Sentry configuration
|
||||
infrastructure/ — Terraform + Docker Compose
|
||||
openspec/ — OpenSpec specs and changes
|
||||
docs/ — Architecture, philosophy, tooling docs
|
||||
|
|
|
|||
|
|
@ -39,8 +39,10 @@ Revisit once **any** of these is true:
|
|||
different hardware (AX52 ≈ €54/mo for a dedicated 64 GB NVMe box that
|
||||
handles planet at low user counts; see design.md).
|
||||
- **Switch path**: no client changes needed to cut over — the Planner
|
||||
proxy already reads `OVERPASS_URL` from env and defaults to
|
||||
private.coffee. Flipping the env var points at our own instance.
|
||||
proxy reads `OVERPASS_URLS` (comma-separated list with round-robin
|
||||
fallback) or the single-entry alias `OVERPASS_URL`, defaulting to
|
||||
`lz4.overpass-api.de` then `overpass-api.de`. Flipping the env var
|
||||
points at our own instance.
|
||||
|
||||
## What's in the folder
|
||||
|
||||
|
|
|
|||
81
docs/roadmap.md
Normal file
81
docs/roadmap.md
Normal 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 1–2)
|
||||
- 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 10–20 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue