The Murph is an iOS app for athletes training the Murph CrossFit hero workout. We want to integrate WHOOP so users can see their recovery before the workout and their strain after — giving them the context they need to push safely.
We only fetch WHOOP data when the user explicitly opts in (via Settings → Connect WHOOP) and only display it in three specific places — nowhere else.
User taps "Connect WHOOP." OAuth 2.0 flow with PKCE. One-tap, standard iOS sheet.
Recovery score (0–100) shown on the Home screen so users can gauge readiness.
Strain, avg HR, max HR shown in workout summary after the WHOOP workout syncs.
Mockups styled to match The Murph's existing design language — warm neutrals, army-green accents, Bebas Neue typography, and monospaced counters.
Connect your WHOOP to see recovery before workouts and strain after.
We request the minimum scopes required to display the three screens above. No data is sent to third parties. Data is stored only in the user's iCloud and a user-scoped Firestore collection.
read:workout
Strain, average HR, max HR, and calories for the workout the user just completed.
read:recovery
Today's recovery score (0–100) pulled on Home screen load.
read:body_measurement
User's max HR for percentage display, and weight for calorie accuracy.
read:profile
First name + WHOOP user ID to associate the OAuth tokens with our user.
offline
Allows our app to refresh access tokens in the background.
Native iOS app uses OAuth 2.0 Authorization Code flow with PKCE (no client secret shipped in the binary).
Redirect URI: themurph://whoop/callback
Access and refresh tokens stored in the iOS Keychain, encrypted with the user's device passcode + Secure Enclave. Never sent to any server other than WHOOP.
The Murph pulls data on demand (Home load and workout save). No server middleware. No third-party analytics see WHOOP data.
Tapping "Disconnect WHOOP" revokes the token with WHOOP's API, deletes local tokens, and clears cached data.
Every screen above adheres to the public WHOOP Brand & Design Guidelines (logos, typography, color palette, utilizing data). The final iOS build will ship the official WHOOP wordmark and Puck SVG files from the developer logo pack — the text treatment in these mockups is a placeholder.
WHOOP wordmark rendered in black or white only — never tinted, rotated, distorted, or overlaid on imagery. Every card displaying WHOOP data carries the required "DATA BY WHOOP" attribution. The logo is never placed next to a chart or data visualization.
Recovery score uses WHOOP's exact color bands: High #16EC06 (67–100%), Medium #FFDE00 (34–66%), Low #FF0026 (0–33%). The ring above shows 78% in High-Recovery green.
Strain values render in WHOOP Strain blue #0093E7 on the 0–21 scale — never on an arbitrary scale, never recolored, never relabeled.
WHOOP data uses DINPro for numbers and Proxima Nova for labels, per the WHOOP typography guidelines. Fallbacks: Helvetica Neue, Helvetica, Arial.
We never rebrand WHOOP metrics. "Recovery" stays Recovery (not "Readiness"). "Strain" stays Strain. Heart rate labels use WHOOP's exact terms: Activity Strain, Average Heart Rate, Max Heart Rate, Day Strain.
Copy alongside recovery data never contradicts WHOOP's own recommendations. A low recovery will not be paired with "push hard today." Messaging mirrors WHOOP's stoplight coaching framework.