Back to Roadmap

Strength Training Logging

Set-based exercise logging for gym sessions. Fully designed in SYNTHESIS §10.2 based on research of Hevy, Strong, Liftosaur, and workout-cool.

Tables

exercise_templates (JSON-seeded reference data)

  • 500+ exercises with slug, name, category, exercise_type, modality
  • Primary/secondary muscle mappings as TEXT arrays (~20 anatomical groups)
  • Equipment requirements as TEXT array
  • Seeded from packages/seed-data/exercises.json

exercise_sets (per-set logging)

  • FK to activities — a strength activity has N exercise_sets
  • exercise_slug references exercise_templates
  • Completed values: reps, weight_kg, duration_seconds, distance_meters, RPE (6-10), RIR (0-4+)
  • Target values: target_reps, target_reps_min/max (rep ranges), target_weight_kg, target_rpe, target_rir
  • Set classification: warmup, working, dropset, failure, amrap
  • Superset grouping: superset_group varchar ('A', 'B', etc.)
  • Exercise type: weight_reps, bodyweight_reps, duration, distance_duration, etc. (Hevy's 8 types)

Key design decisions

  • Flat table (one row per set), not nested exercise→set hierarchy — simpler queries
  • sort_order determines global order within the activity, superset grouping via shared superset_group value
  • Separate target vs completed fields (Liftosaur pattern) for plan adherence tracking
  • RPE and RIR both stored — RPE 10 = RIR 0, used by different training methodologies

Depends on

Schema Migration, Seed Data Pipeline (exercises.json)

Reference

See docs/api-research/SYNTHESIS.md §10.2 (Set-Based Exercise Logging).

Status
Backlog
Priority
Normal
Platform
iOS
Date
1 month ago