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
Links#
What’s next#
- Native deep-linking for payment intents; richer receipt exports
- Gateway production integration (secure storage & 3DS flows)