docs: create roadmap (3 phases)

This commit is contained in:
2026-02-16 06:29:59 +01:00
parent 7d29bc896e
commit 142971bc1f
3 changed files with 147 additions and 16 deletions
+16 -16
View File
@@ -54,25 +54,25 @@
| Requirement | Phase | Status | | Requirement | Phase | Status |
|-------------|-------|--------| |-------------|-------|--------|
| INP-01 | TBD | Pending | | INP-01 | Phase 1 | Pending |
| INP-02 | TBD | Pending | | INP-02 | Phase 1 | Pending |
| INP-03 | TBD | Pending | | INP-03 | Phase 1 | Pending |
| INP-04 | TBD | Pending | | INP-04 | Phase 1 | Pending |
| INP-05 | TBD | Pending | | INP-05 | Phase 1 | Pending |
| INP-06 | TBD | Pending | | INP-06 | Phase 1 | Pending |
| INP-07 | TBD | Pending | | INP-07 | Phase 1 | Pending |
| SET-01 | TBD | Pending | | SET-01 | Phase 2 | Pending |
| SET-02 | TBD | Pending | | SET-02 | Phase 2 | Pending |
| SET-03 | TBD | Pending | | SET-03 | Phase 2 | Pending |
| MOD-01 | TBD | Pending | | MOD-01 | Phase 3 | Pending |
| MOD-02 | TBD | Pending | | MOD-02 | Phase 3 | Pending |
| MOD-03 | TBD | Pending | | MOD-03 | Phase 3 | Pending |
**Coverage:** **Coverage:**
- v1 requirements: 13 total - v1 requirements: 13 total
- Mapped to phases: 0 - Mapped to phases: 13
- Unmapped: 13 - Unmapped: 0
--- ---
*Requirements defined: 2026-02-15* *Requirements defined: 2026-02-15*
*Last updated: 2026-02-15 after initial definition* *Last updated: 2026-02-16 after roadmap creation*
+72
View File
@@ -0,0 +1,72 @@
# Roadmap: Gravl Workout UX Improvements
## Overview
Three phases deliver the improvements in order of risk and value. Phase 1 fixes input UX with zero backend changes. Phase 2 adds flexible set management. Phase 3 enables workout modification via a fork/custom data path. Each phase is independently shippable and leaves the existing program workout flow intact.
## Phases
- [ ] **Phase 1: Input UX** - Make weight/reps inputs fast, mobile-friendly, and validation-safe
- [ ] **Phase 2: Flexible Sets** - Let users add and remove sets on any exercise during a workout
- [ ] **Phase 3: Workout Modification** - Let users swap or add exercises to a program workout (forked as custom)
## Phase Details
### Phase 1: Input UX
**Goal**: Users can log weight and reps quickly on mobile without fighting the inputs
**Depends on**: Nothing (first phase)
**Requirements**: INP-01, INP-02, INP-03, INP-04, INP-05, INP-06, INP-07
**Success Criteria** (what must be TRUE):
1. Weight field shows "kg" unit suffix visibly inside or adjacent to the input
2. Tapping + or - on weight steps by 2.5kg; tapping + or - on reps steps by 1
3. Weight and reps inputs reject negative values — typing or stepping below 0 is blocked
4. All input fields and action buttons are at least 44px tall and usable with one thumb
5. Input font size is at least 16px so iOS does not auto-zoom the page on focus
**Plans**: TBD
Plans:
- [ ] 01-01: Build stepper input component (shared for weight and reps)
- [ ] 01-02: Apply validation constraints and kg suffix to all workout inputs
- [ ] 01-03: Audit and fix touch target sizes across workout UI
### Phase 2: Flexible Sets
**Goal**: Users can add or remove sets on any exercise mid-workout and have those changes persist
**Depends on**: Phase 1
**Requirements**: SET-01, SET-02, SET-03
**Success Criteria** (what must be TRUE):
1. An "Add set" button appears on every exercise card; tapping it appends a new empty set row
2. Each set row has a delete control; tapping it removes that row from the exercise
3. Added and removed sets are reflected correctly after saving the workout (database persists the change)
4. Removing the last set on an exercise is either blocked or shows a confirmation
**Plans**: TBD
Plans:
- [ ] 02-01: Add dynamic set state management in WorkoutPage
- [ ] 02-02: Update backend to accept variable set count on workout log save
### Phase 3: Workout Modification
**Goal**: Users can swap out or add exercises to a scheduled program workout, creating a personal fork that does not alter the underlying program
**Depends on**: Phase 2
**Requirements**: MOD-01, MOD-02, MOD-03
**Success Criteria** (what must be TRUE):
1. An "Edit workout" control on a program workout opens an exercise-selection flow
2. User can replace any exercise in the workout with a different exercise from the full exercise list
3. User can add exercises to the workout from the exercise list
4. The modified workout is saved as a personal copy — the original program day is unchanged for future sessions
**Plans**: TBD
Plans:
- [ ] 03-01: Create exercise list endpoint and exercise-picker UI component
- [ ] 03-02: Implement fork logic: copy program workout to custom_workout on modification
- [ ] 03-03: Wire up workout modification UI (swap, add exercises) against forked data
## Progress
**Execution Order:**
Phases execute in order: 1 → 2 → 3
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Input UX | 0/3 | Not started | - |
| 2. Flexible Sets | 0/2 | Not started | - |
| 3. Workout Modification | 0/3 | Not started | - |
+59
View File
@@ -0,0 +1,59 @@
# Project State
## Project Reference
See: .planning/PROJECT.md (updated 2026-02-15)
**Core value:** Logging a workout should be fast, clear, and flexible — the app never fights the user during a session
**Current focus:** Phase 1 — Input UX
## Current Position
Phase: 1 of 3 (Input UX)
Plan: 0 of 3 in current phase
Status: Ready to plan
Last activity: 2026-02-16 — Roadmap created
Progress: [░░░░░░░░░░] 0%
## Performance Metrics
**Velocity:**
- Total plans completed: 0
- Average duration: —
- Total execution time: 0 hours
**By Phase:**
| Phase | Plans | Total | Avg/Plan |
|-------|-------|-------|----------|
| - | - | - | - |
**Recent Trend:**
- Last 5 plans: —
- Trend: —
*Updated after each plan completion*
## Accumulated Context
### Decisions
- Keep existing program model; custom workouts are a fork, not a replacement
- Frontend-only changes for Phase 1 (zero backend risk)
- React Hook Form + Zod approved for input validation (research recommendation)
- Do NOT modify shared program data — fork to custom_workout table for per-user changes
### Pending Todos
None yet.
### Blockers/Concerns
- Phase 3 requires new DB tables (custom_workouts, custom_workout_exercises) and a source_type column on workout_logs — backend schema migration needed before Phase 3 planning
## Session Continuity
Last session: 2026-02-16
Stopped at: Roadmap created, ready to plan Phase 1
Resume file: None