Files
workouts/README.md
T
rzen 3bba78eab5 Open a paged progress run when tapping an iPhone exercise
Tapping an exercise now opens ExerciseProgressView -- the watch's Ready -> work/rest -> Finish flow on iPhone, with rep sets counting up, timed sets and rests counting down and auto-advancing, a work-set dot row (dash on the active set, gap widening at the current rest), and capsule Start/Done/One More buttons. The detail/edit screen moves behind a trailing Edit swipe (leading swipe still completes). Swiping back to the Ready page resets the run.
2026-06-20 14:15:43 -04:00

50 lines
2.3 KiB
Markdown

# Workouts
A workout tracking app for iPhone and Apple Watch. Build workout splits, run
sessions, and track your progress — with your data stored as plain JSON files in
your own iCloud Drive.
## Key Features
- **Workout splits** — organize exercises into reusable routines with custom
colors and icons. Start with built-in starter splits (Upper Body / Core /
Lower Body) generated from a bundled exercise catalog.
- **Exercise library** — a bundled catalog of starter exercises (bodyweight and
machine-based) to populate your splits.
- **Run a workout** — start a session from a split, then tap an exercise to run it
as a paged flow: a **Ready?** lead-in, count-up work phases, count-down rests, and
a **Finish** page — mirroring the Apple Watch. Swipe a row to mark it complete, or
swipe to edit its plan (sets/reps/weight or duration) and notes.
- **Progress tracking** — weight-progression charts per exercise across past
sessions.
- **Apple Watch companion** — starting a workout on the iPhone launches the watch
app straight into it. The watch lists your in-progress workouts; pick one, pick an
exercise, and run it as a paged flow: a **Ready?** lead-in, count-up work phases,
count-down rests with final-three-second haptics and auto-advance, and a **Finish**
page with **One More** and a **Done** that auto-completes after a countdown. A
phase-dot row (purple work, teal rest) tracks progress. Rest time and the
auto-finish countdown are configurable; changes sync back to the phone.
- **iCloud Drive sync** — your data lives as human-readable JSON in your iCloud
Drive, synced across devices and visible in the Files app. iCloud is required.
## Architecture
iCloud Drive JSON documents are the **sole source of truth**; a local SwiftData
store is a rebuildable read-through cache populated exclusively by an
`NSMetadataQuery` observer (one-way flow: files → observer → cache). The phone is
the only device that touches iCloud Drive; the Apple Watch is a thin remote that
round-trips workout changes through the phone via WatchConnectivity.
See `REQUIREMENTS.md` for the data model and `CLAUDE.md` for project guidance.
## Building
The Xcode project is generated with [XcodeGen](https://github.com/yonaskolb/XcodeGen):
```sh
xcodegen generate
open Workouts.xcodeproj
```
Requires Xcode 26 (iOS 26 / watchOS 26, Swift 6).