An iOS fitness app built around the science-backed WOOP methodology (Wish, Outcome, Obstacle, Plan) developed by Professor Gabriele Oettingen at NYU.
WOOP is a mental strategy grounded in research that helps people achieve goals by combining positive thinking with realistic obstacle identification:
| Letter | Step | Description |
|---|---|---|
| W | Wish | A meaningful, specific, and feasible fitness goal |
| O | Outcome | The best possible result of achieving your wish |
| O | Obstacle | The main inner obstacle that could hold you back |
| P | Plan | An if-then plan: If [obstacle], then I will [action] |
- 4-step WOOP wizard — guided creation through Wish → Outcome → Obstacle → Plan
- Category tagging — Strength, Cardio, Flexibility, Weight Loss, Muscle Gain, Endurance, Wellness
- Target dates with visual progress tracking
- Archive/activate goals, streak tracking
- Beginner Full Body, Upper Body Strength, Lower Body Strength
- Core Power, HIIT Burn, Push Day (PPL)
- Mobility & Flexibility, Cardio Starter
- Real-time set/rep/weight logging with rest timer
- Mood tracking and notes after each session
- Weekly/monthly/3-month workout frequency chart (Swift Charts)
- Total workouts, streak, and time stats; per-goal progress bars
- Daily notification reminders and if-then plan reminders via
UserNotifications
- SwiftUI — declarative UI
- Swift Charts — workout frequency visualization
- UserNotifications — local reminders
- UserDefaults + Codable — local persistence
- MVVM-ish architecture with
ObservableObject/@EnvironmentObject
- iOS 17.0+, Xcode 15+, Swift 5.9+
- Open
WoopHealthy.xcodeprojin Xcode - Select a device or simulator (iOS 17+)
- Build and run (
⌘R) - Complete onboarding, then create your first WOOP fitness goal
WoopHealthy/
├── App/ # Entry point + tab bar
├── Models/ # WoopGoal, Exercise, Workout, WorkoutLog
├── Services/ # DataStore, WorkoutLibrary, NotificationService
└── Views/
├── Onboarding/
├── Dashboard/
├── Goals/WoopCreation/ # 5-step WOOP wizard
├── Workouts/ # Library, Detail, Active session, Quick log
├── Progress/ # Charts + stats
└── Settings/