Files
gravl/.planning/research/SUMMARY.md
T
2026-02-15 22:48:57 +01:00

2.4 KiB

Research Summary: Workout UX Improvements

Project: Gravl — PPL Workout Tracker Synthesized: 2026-02-15

Key Findings

Stack

  • Keep existing React 18 + Vite + Express + PostgreSQL stack
  • Add only: react-hook-form + zod + @hookform/resolvers (~38KB gzipped)
  • Build custom stepper input component (no library needed)
  • Do NOT add: UI frameworks, Redux, TanStack Query, Framer Motion
  • CSS-only fix for touch targets: min 44px height, 16px font-size prevents iOS zoom

Table Stakes (Must Ship)

  • Input validation: no negative reps/weights, proper number constraints
  • Weight unit display (kg suffix visible in input)
  • Mobile-optimized input layout (larger touch targets)
  • Add/remove sets per exercise
  • Pre-fill last workout's values for reference

Differentiators (Should Ship)

  • Custom workout builder (pick exercises, save as template)
  • Modify program workouts (fork to custom)
  • Stepper inputs for rapid logging (+/- buttons)

Watch Out For

  1. Don't break existing flow — program workout logging must stay identical
  2. Don't modify shared program data — fork to custom_workout for per-user changes
  3. Don't let scope creep — "add set" ≠ "full program builder"
  4. Don't break mobile layout — all new controls must fit 600px width
  5. Backward compat — existing workout_logs must keep working with new schema

Architecture Decision

Dual data path:

  • Program workouts (existing, read-only) — unchanged
  • Custom workouts (new) — user-created, flexible sets, stored in new tables

New tables: custom_workouts, custom_workout_exercises Enhanced: workout_logs gets source_type column (default 'program')

Suggested Build Order

  1. Input UX fixes (validation, units, stepper, layout) — no backend changes
  2. Flexible sets (local state + backend accepts variable set count)
  3. Exercise list endpoint (GET /api/exercises for search)
  4. Custom workout CRUD (new tables + endpoints)
  5. Custom workout builder UI (frontend page)
  6. Modify program workout (fork program → custom)

Each phase is independently shippable. Phase 1 delivers immediate UX value with zero risk.

Research Files

  • STACK.md — Technology recommendations and what to avoid
  • FEATURES.md — Feature categorization (table stakes vs differentiators)
  • ARCHITECTURE.md — Schema design, component structure, data flow
  • PITFALLS.md — 7 critical pitfalls with prevention strategies