Skip to content
Daniyar Kurmanbayev Contact

MIG

iOS App · Fintech

Redesign and rate-reservation features for a major currency exchange app in Kazakhstan.

iOS Developer (redesign + feature delivery) Released
  • iOS App
  • Fintech
  • UIKit
  • Alamofire
  • Firebase
MIG Banner.png

Summary

iOS app for MIG, one of the largest currency exchange networks in Kazakhstan. I worked on the redesign and added new product features, including a reservation flow for locking a rate or reserving an amount at a selected branch. The app combines live rates, calculators, branch discovery, and content pages opened via webviews. Key highlights:

  • End-to-end reservation lifecycle with status tracking and timers
  • Rates + conversion calculator tied to nearest branches (list + map)
  • Hybrid UI codebase modernized during feature delivery

Quick facts

  • Role: iOS Developer (redesign + feature delivery)
  • Timeframe: Shipped redesign + new features (including rate/amount reservation)
  • Platform: iOS
  • Status: Released
  • Team: In-house team

Problem

  • Users needed a fast way to check live exchange rates and calculate buy/sell outcomes.
  • Reservation had to cover multiple modes (rate tracking, amount booking) with clear disclaimers and statuses.
  • The app had a mixed UI stack (storyboards + code) and required changes without breaking existing flows.

Solution

I implemented redesigned screens and shipped the reservation subsystem: phone-based auth, service selection, branch choice, confirmation, and a status screen that reflects each request state (pending/confirmed/declined/completed) with countdown and branch details. I also improved the core rate and calculator experience and wired supporting flows like feedback after completion.

  • Reservation modes: rate booking and amount booking (with/without rate binding)

Architecture

  • MVC with service-based network layer (Alamofire)
  • Live rates + calculator module feeding reservation inputs
  • Reservation module: auth → service type → branch selection → request status
  • Webview wrapper for content-heavy sections (news/analytics/info)
  • Push notifications entry points into updates/reservation-related screens
  • Local persistence for lightweight state (UserDefaults)
  • Hybrid UI: Storyboards + UIKit/SnapKit screens as needed

Tech stack

  • iOS: Swift, UIKit, SnapKit, Storyboards, Kingfisher
  • Architecture: MVC
  • Backend/Infra: Alamofire, ReachabilitySwift, Firebase Messaging/Analytics/Crashlytics
  • Tooling: CocoaPods, GitLab

Hard problems solved

  • Modeled reservation as a state machine with explicit statuses and user recovery paths (e.g., declined → reselect branch)
  • Built a time-sensitive request UI (countdowns, “time left”, cancellation) that stays consistent across app sessions
  • Kept reservation correctness across three booking modes with different constraints and disclaimers
  • Integrated branch selection with both list and map views and ensured consistent “closest branch” behavior after calculations
  • Delivered redesign changes safely in a mixed Storyboard + programmatic UI codebase
  • Ensured reliable network behavior under changing connectivity using reachability-aware flows

Impact / Results

  • Shipped redesign improvements and new reservation functionality without disrupting core rates usage
  • Enabled users to plan visits by reserving rate/amount at a specific branch and tracking request status
  • Improved the end-to-end journey: check rate → calculate → pick branch → reserve → confirm → give feedback