Skip to content
Daniyar Kurmanbayev Contact

MentalMind

iOS App · Meditation

Meditation and self-development app rebuilt from scratch and shipped under tight deadlines.

Sole iOS Developer (project takeover + rewrite) Discontinued (was live on the App Store for years)
  • iOS App
  • Meditation
  • UIKit
  • StoreKit
  • AVFoundation
  • RxSwift
MentalMind Banner.png

Summary

Meditation and self-development app with onboarding, content discovery, playback customization, habit reminders, progress tracking, and subscription paywalls. I joined late when the existing codebase was incomplete and low quality, rewrote the app from scratch to hit a fixed deadline, and handled App Store release. Key highlights:

  • Full rewrite under a tight timeline to ship a production-ready v1
  • Audio player with voice + background sound selection
  • Subscription flow with server receipt validation and restore handling

Quick facts

  • Role: Sole iOS Developer (project takeover + rewrite)
  • Timeframe: 1 month delivery window
  • Platform: iOS (iPhone)
  • Status: Discontinued (was live on the App Store for years)
  • Team: Solo (handoff from previous developer)

Problem

  • Project was ~30% done with low-quality code and a near-term launch deadline.
  • Needed a stable content app with many screens, offline/error states, and subscription access control.
  • Required multiple auth methods and localization (RU/KZ) without time for a heavy architecture refactor.

Solution

I rebuilt the app from scratch with a pragmatic MVVM/MVC hybrid and RxSwift to keep feature delivery fast. The app shipped with a clean navigation structure (Home/Tools/Create/Profile), content catalogs and detail screens, a configurable meditation player, reminders, progress history, and StoreKit subscriptions with server-side receipt posting. I also drove App Store publishing and post-launch stability work.

  • Focused on reliability and scope control over long-term maintainability due to the deadline

Architecture

  • UIKit app with MVVM/MVC hybrid: ViewControllers own ViewModels and bind via RxSwift subjects
  • APIPoint + router-based networking on Alamofire with typed Codable responses
  • Localization stored in app settings and propagated via Accept-Language headers
  • Meditation playback uses AVPlayer for narration + AVAudioPlayer for looping background sounds
  • StoreKit subscriptions: product fetch, purchase flow, transaction queue handling, receipt upload to backend
  • Profile/history features use calendar-based UI and server-backed history models

Tech stack

  • iOS: Swift, UIKit, RxSwift, StoreKit, AVFoundation
  • Architecture: MVVM/MVC hybrid, Router-based networking, Codable models
  • Backend/Infra: REST APIs, server receipt validation for subscriptions
  • Tooling: CocoaPods, Alamofire, SnapKit, Kingfisher, Firebase (Analytics/Crashlytics/Messaging)

Hard problems solved

  • Decided to rewrite instead of refactor to de-risk delivery under a one-month deadline
  • Built a stable audio session: switching narrator voices, syncing durations, mixing background audio
  • Implemented subscription flow end-to-end: purchase, transaction handling, receipt posting, duplicate protection
  • Coordinated many dependent API calls with predictable UI state using Rx (loading/error/ready signals)
  • Kept localization consistent across UI and server behavior (language picker → headers → content)
  • Shipped resilience states (no internet, retry, generic errors) across the critical flows

Impact / Results

  • Delivered a complete v1 from an incomplete codebase within the remaining deadline window
  • Released to the App Store and kept the app running in production for multiple years
  • Established a working baseline for content catalogs, playback, and subscription access control