docs: create roadmap (3 phases)
This commit is contained in:
@@ -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 | - |
|
||||
Reference in New Issue
Block a user