BankApp — Android Wallet & Payments

2 min read

BankApp (Android) — Wallet Flows#

Kotlin · Jetpack Compose · Retrofit · Coroutines · Material 3

TL;DR — Built wallet features (card reloads, QR payments, bill-pay). A clean Retrofit API layer and resilient UI reduced visible errors and clarified flows.


Context & Role#

Android module focused on wallet flows, designed to operate even when core banking features are unavailable.

Problem#

  • Payment flows were overly coupled to banking onboarding.
  • Intermittent network caused confusing failures and abandons.

Approach & Architecture#

  • Feature-based packages (screens, view models, DI)
  • Retrofit interfaces with clean DTOs, interceptors, consistent error envelopes
  • Compose UI with unified components (cards, inputs, buttons) and a11y labels
  • Robust retries and offline affordances where possible

Tech Stack#

  • Kotlin

  • Jetpack Compose

  • Retrofit / OkHttp

  • Coroutines

  • Material 3

  • Hilt / DI


Challenges & Trade-offs#

  • Gateway sandbox limitations → emulated webhooks + idempotent retries in dev
  • UI complexity → extracted shared components to keep code tidy and reusable

Results#

  • Fewer user-visible errors in payment flows via defensive UI and API handling
  • Faster iteration thanks to a clean, testable Retrofit layer


What’s next#

  • Native deep-linking for payment intents; richer receipt exports
  • Gateway production integration (secure storage & 3DS flows)