Developing a Coaching Mobile Application
A coaching app differs from mentoring in focus: not expertise transfer, but working with client goals and inner states. Tools differ—balance wheel, progress journal, reflective questions, meditations. Sessions are more structured. Business model often subscription or session packages.
Session Booking
Calendly integration or custom booking flow. Custom implementation—time_slots table like mentoring. Difference: coaches often keep strict schedules (e.g., Tuesdays 10:00–18:00 only), need flexible availability editor.
Coach availability editor: template by weekday + exceptions. RecurringSchedule model: dayOfWeek, startTime, endTime. Exceptions (vacation, holidays)—blocked_dates. On booking, compute available slots for next N weeks accounting for booked and blocked.
Timezones mandatory. Coach in Moscow, client in London. Store all slots in UTC, convert to local on client. TimeZone.current (iOS) / ZoneId.systemDefault() (Android) for device zone. DateComponentsFormatter for human-readable "in 2 hours".
Coaching Tools in App
Balance wheel: circular diagram with 8–12 life areas (career, health, relationships, finance, etc.). Client rates each 1–10. Draw via Core Graphics / Canvas in Compose: UIBezierPath for sectors on iOS, Path in Compose on Android. Animation on rating change—withAnimation (SwiftUI) / animateFloatAsState (Compose).
History of wheels: show changes over month/quarter. Two overlaid wheels (current and past)—transparency via UIColor.withAlphaComponent().
Progress journal: daily/weekly client entries. Markdown or rich text via UITextView with custom toolbar for bold/italic. Save locally (Core Data / Room) + server sync. Coach sees entries only if client explicitly shares—toggle in settings.
Reflective questions: coach creates question templates for homework. Client answers in app. Question + formatted text answer + option to attach voice note (via AVAudioRecorder).
Habit tracker: simple daily habit checklist. UITableView with UISwitch or Compose Checkbox. Streak—days in a row, motivating element. Calendar.current.dateComponents([.day], from:to:) for streak counting.
Sessions: Recording and Notes
Video session: built-in (100ms, Daily.co) or external link. After—field for coach notes (key insights, next steps). Client notified notes added.
Session audio recording (with consent): AVCaptureSession with AVCaptureAudioDataOutput. Record M4A, upload to server. Consent storage—separate consent flag with timestamp in DB.
Audio transcription: SFSpeechRecognizer (iOS, offline for supported languages) or OpenAI Whisper API via server for accuracy and multilingual.
Subscriptions and Payment
Stripe PaymentSheet for one-off sessions and Stripe Billing for packages. iOS App Store subscriptions (StoreKit 2) only if coaching sold as "app content"—but most coaching apps use Stripe (web form) without IAP.
Package of 10 sessions: Product with type: .nonConsumable in StoreKit (used once, not restored on app reinstall). Or package as limited-time subscription.
Process and Timeline
Booking + profiles + video sessions + push: 5–7 weeks. Balance wheel + journal + habits + reflective questions + subscriptions: 2–3 months. Pricing calculated after requirements analysis.







