diff --git a/RIPPR.md b/RIPPR.md index 190c75b..d9c6147 100644 --- a/RIPPR.md +++ b/RIPPR.md @@ -4,7 +4,7 @@ Rippr is a native Android GPS ride recorder for motorcycles. Its canonical repo `~/dojo/rippr`, which **has no git remote** — it exists only on that machine, so the bundle below is the only off-machine copy of its history. -**Snapshot taken at:** `46a0726` — "Document the whole project: README, architecture, v1 history, v3 backlog" (19 commits) +**Snapshot taken at:** `957392f` — "v3: add Ideas section, reverse the no-live-map decision" (20 commits) ## What is here diff --git a/rippr-full-history.bundle b/rippr-full-history.bundle index 0fcdba3..ea73d73 100644 Binary files a/rippr-full-history.bundle and b/rippr-full-history.bundle differ diff --git a/rippr-src/docs/v3/BACKLOG.md b/rippr-src/docs/v3/BACKLOG.md index 23d55d9..2db2a05 100644 --- a/rippr-src/docs/v3/BACKLOG.md +++ b/rippr-src/docs/v3/BACKLOG.md @@ -64,19 +64,17 @@ brings hosting, privacy, and location-sharing consent into scope. --- -## 3. Live map — explicitly deferred, revisit deliberately +## 3. Live map on the recording screen — **decision reversed** -v2 has **no live map by design**, on Dylan's reasoning: +v2 deliberately shipped no live map, on the reasoning that the phone rides in a pocket. +Dylan has since asked for one anyway, for visual appeal. Treat the v2 stance as superseded. -> "we hit start, put the phone in our pocket and then stop it after the ride. So having a -> live map doesn't make sense at all honestly, we just wanna see the path render after." +What still holds and should not be given up: -`TrackingService` holds no reference to any map type, and the map exists only inside the -detail screen's Compose lifecycle. That boundary is deliberate and worth preserving unless -there is a real reason to cross it. - -**Group riding is the one plausible reason** — seeing where the others are while stopped at -a junction. If it happens, keep it screen-on-only and never let the service touch it. +- **`TrackingService` must never reference a map.** Rendering belongs to the Compose + lifecycle of a visible screen, not the service. +- **Screen-on only.** No tile fetch or redraw while backgrounded. +- Battery cost sits on top of GPS and a wake lock — worth measuring before and after. --- @@ -95,7 +93,35 @@ a junction. If it happens, keep it screen-on-only and never let the service touc --- -## 5. Things that must not regress +## 5. Ideas + +Terse on purpose. Unshaped, to be consolidated later. + +- **Live map while recording.** More visually appealing than a numbers screen. Reverses the + v2 decision — see section 3 for the constraints that survive it. +- **Pick a real theme.** The current look is functional dark + safety orange, chosen to + match the icon. Decide on an actual visual identity and push the UI toward something + polished rather than merely clean. +- **User sign-up and accounts.** Register people, give their data somewhere to live. + Prerequisite for anything cloud-side, and pairs with the group-ride server in section 2. +- **Activity type per ride.** Motorcycle, bicycle, skateboard, running, other. The app is + not inherently motorcycle-only — the recording pipeline is activity-agnostic already. + Note: adds a column to `Trip`, so it needs a real `Migration` (the destructive fallback + is gone). Type could also drive sensible defaults — speed noise floor, map zoom, + elevation smoothing. +- **Paid cloud backup.** Ongoing storage of rides over time. Needs accounts first, plus a + decision on hosting, pricing, and what happens to data when someone stops paying. + +### Threads running through these + +Sign-up, cloud backup and group ride are one programme, not three: they all need a server, +identity, and a privacy stance. Worth scoping together rather than separately. + +Activity type and theming are independent and much cheaper — either could ship alone. + +--- + +## 6. Things that must not regress Hard-won and easy to undo by accident. Each has a comment in the code explaining why. @@ -116,7 +142,7 @@ Hard-won and easy to undo by accident. Each has a comment in the code explaining --- -## 6. Reading order for picking this up cold +## 7. Reading order for picking this up cold 1. [../../README.md](../../README.md) — what the app is and its current state 2. [../ARCHITECTURE.md](../ARCHITECTURE.md) — why it is built this way