iPhone, Apple Watch and Apple TV — what each one does
Apple Apps
Surflink ships three native apps from one repository (surflink-apple), built with SwiftUI: the iPhone app (iOS 17+), the Apple Watch app (watchOS 10+) and the Apple TV app (tvOS 17+), plus iPhone widgets. They talk to the same backend as the web app and share its models.
iPhone
The companion app is the phone half of the spine.
For coaches
- Film — the capture screen (who's surfing now, watch-live binding, Live Activity on the lock screen, background upload), plus camera-roll import.
- Library — every session and clip, with a session reel; the clip player has overlays and an A/B loop.
- Review — author a guided review on the phone: pause, draw with a finger, hold to record a voice note, gate a keypoint with a Got it, publish.
- Schedule — training sessions, and a new-session form.
- Messages, notifications and per-type notification preferences (including SMS verification).
- Workspace admin — members, roles and modules for owners; the platform admin console for super admins.
- Billing — start or change the plan and open the Stripe portal.
For athletes
- Home — upcoming sessions, drills, recent footage and the measured progress numbers.
- Guided review player — the same keypoints, drawings, voice and Got it as the web.
- Messages and Notifications.
- Watch pairing — the phone signs in to the watch and pushes today's schedule to it.
Invites are accepted in the app too (Claim invite).
Apple Watch
The watch is deliberately simple: it holds no tokens and makes no network calls; everything goes through the paired phone.
- Start Surf — pick today's scheduled session (pushed from the phone) or Freestyle. A real surfing workout starts: water lock, GPS, heart rate, motion at up to 100 Hz.
- Surf. The watch pings the phone so the coach's capture screen shows the athlete as live.
- End Session — the recording hands off to the phone, which uploads it (offline-first, retrying until it lands). It appears as a wearable session — see Prove.
Apple TV
- Pair — the TV shows a six-character code and a QR; scan it or open
/tv?code=…signed in, confirm, name the TV. - Browse and play — sessions and clips with the HUD, guided reviews, and a compare view.
- Send to TV — from the web session page a coach drives the TV: the clip, the transport, and a laser pointer.
Paired TVs are managed from Settings → TVs on the web.
Widgets
A Next session widget and the capture Live Activity (upload progress on the lock screen while filming).
For developers
The project is generated by XcodeGen from project.yml (the .xcodeproj is gitignored); schemes are SurflinkCompanion (iPhone, runs the unit tests), SurflinkWatch, SurflinkTV and SurflinkUIAudit. Wire models that the watch pipeline shares with the web (Shared/WearableModels.swift ↔ src/lib/wearable.js) are pinned by tests on both sides. iPhone push requires APNs credentials on the server.