I built Coach because every fitness app I tried was too complicated. They had hundreds of features, complex tracking systems, and endless customisation options. I just wanted something that would hold me accountable to three simple things each day.
The Problem with Feature-Rich Apps
Mainstream fitness apps suffer from feature bloat. They try to be everything to everyone, which means they're often mediocre at everything. More critically, they increase decision fatigue, the exact opposite of what you want when building habits.
I wanted an app with strong opinions. One that said: "Here's what you need to do today. Do it or don't."
Three Core Features
Coach tracks exactly three things:
- Step count (synced from Apple Health)
- Gym attendance (GPS-verified, you can't fake being at the gym)
- Meal logging (simple, not obsessive)
Complete all three, and your streak continues. Miss one, and it breaks. That's the entire accountability model.
Learning Swift
This was my first iOS project, which meant learning Swift from scratch. The language itself is elegant. Coming from TypeScript, the type system felt familiar but more rigorous.
The harder part was SwiftUI and understanding Apple's design patterns. The documentation is good, but there's a steep learning curve for concepts like data flow and state management.
The best constraint was having no team. Every feature had to be simple enough that I could build and maintain it alone.
What I'd Do Differently
If I rebuilt Coach today, I'd spend more time on the data model upfront. Some early decisions around how workouts and meals were stored created friction later. The constraint of "simple enough to build alone" is valuable, but you still need to plan.
The app has dramatically improved my own consistency. Sometimes the best tool is the one you build yourself. If you're weighing up a build of your own, our guide to app development costs in the UAE covers what each price band actually buys.
Frequently asked questions
How long does it take to learn Swift coming from TypeScript?
The language itself comes quickly, the type system feels familiar but more rigorous. The steep part is SwiftUI and Apple's patterns for data flow and state management, which took longer than the language syntax.
Should a first app have fewer features?
Yes. Constraints are the advantage. Coach tracks exactly three things, and every feature had to be simple enough for one person to build and maintain. Feature bloat increases decision fatigue for users and maintenance burden for you.
What would you do differently on a first mobile app?
Spend more time on the data model upfront. Early storage decisions around workouts and meals created friction later. Keeping scope small is right, but the data model still deserves real planning.