Documentation
Technical
Stack
SwiftUI, Swift 6, iOS 18.2+. MVVM with @Observable. SessionManager drives auth state and profile lifecycle.
Backend
Firebase Auth (email, Apple, Google). Firestore for user profiles and weight entries. Offline-first with local persistence.
Monetisation
Superwall paywall. Basic (free) vs Pro (paid) tier. Paywall gate after onboarding review step.
Cut Science
Trend Weight
EWMA (Exponentially Weighted Moving Average) smoothing. Eliminates daily noise — shows the real direction.
Pace System
4-state: onTrack (green), tooFast (amber), trailing (amber), danger (red). Drives all UI colour.
Projection Cone
Uncertainty-aware forecast. Widens over time. Shows probability of making weight by weigh-in date.
Cycle Intelligence
Menstrual cycle offset/buffer for female athletes. Phase-aware projections, non-diagnostic supportive messaging.
Design Tokens
| Token | Value | Usage |
|---|---|---|
| Accent | #a32a18 | Brand red, CTAs, active states |
| Ink | #15140f | Primary text |
| Paper-2 | #f6f4ef | Page background |
| Paper | #ffffff | Card background |
| Green | #2f5a24 | On track |
| Amber | #6f5210 | Too fast / trailing |
Typography
Oswald — display, eyebrows, buttons (uppercase, 0.12em tracking). IBM Plex Sans — body. IBM Plex Mono — metadata, labels.
Shape
Card radius: 20px. Control radius: 14px. Shadow-only (no borders on Balanced). Min touch target: 44pt.