A consumer e-payment super-app for the Iranian market — utility and phone bill payments, mobile top-up, a wallet, and an integrated store — built within a team at HafHashtad. My work centred on rewriting the single-module app into a modular architecture that several engineers could build in parallel.
What it does
- Bill inquiry / payment / archive, mobile charging, wallet deposits, and an in-app store (catalog, filtering, cart, orders)
- A separately-branded B2B2C storefront that reuses the same shared core against the same backend
- Card and bank payments handled through an integrated third-party PEC gateway
Architecture & testing
- MVVM with LiveData and a repository pattern, split into remote (Retrofit + RxJava 2) and local (Room) sources
- Multi-module: a host app, a shared library holding the base classes and feature core, and a second app consuming it
- A swappable real/mock local layer selected by Gradle flavors, plus a dedicated unit-testing setup — a custom RxJava 2 scheduler rule and ~19 Robolectric-based ViewModel tests — to catch regressions before release