# 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).
