d5915a9552
- Redesign the watch app into an active-workout runner: a root gate shows the in-progress workout's exercises or prompts to start one on iPhone, and each exercise runs as a horizontally-paged HIIT cycle (count-up work, count-down rest with final-three-second haptics + auto-advance, One More / Done on the last set). Replaces the old history list. - Add a configurable rest-between-sets duration in iPhone Settings (default 45s), synced to the watch over WatchConnectivity. - Launch the watch app into the session when a workout starts on the phone via HealthKit (startWatchApp); the watch runs an HKWorkoutSession for foreground runtime and ends it when the workout finishes. Adds the HealthKit entitlement + Health usage strings on both targets and WKBackgroundModes on the watch. Claude-Session: https://claude.ai/code/session_018gg69MaUetDNzWzBXisfMV
46 lines
1.9 KiB
Markdown
46 lines
1.9 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, track sets/reps/weight or
|
|
timed exercises, and mark exercises complete.
|
|
- **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; run the session from your wrist as a HIIT cycle: count-up
|
|
work phases, count-down rests with final-three-second haptics and auto-advance,
|
|
and **One More** / **Done** on the last set. Rest time is 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).
|