Green Wallet's premise: make everyday spending count toward sustainability. Shoppers buy from participating ethical merchants and earn "Green Coins" — a loyalty currency redeemable at checkout. I joined the existing codebase in early 2021 and became the primary contributor to the consumer app, and separately built out most of the merchant companion app.
B2C — the shopper app
- Onboarding with phone/email verification, PIN setup, and optional Google Sign-In; biometric + PIN re-authentication
- ShopGreen storefronts, merchant details and reviews, basket, and checkout
- Payments: camera-based card scanning (card.io), a WebView-driven 3-D Secure flow, and card-token traffic routed to a separate PCI-scope gateway in release builds
- One-Click Pay in-store QR scanning, Green Coins redemption, and order history
- Firebase Remote Config gating the minimum required app version
B2B — the merchant companion
- A catalog and campaign browser with product search/filtering and an end-to-end checkout preview
- Read-only against the backend (its home tab was literally labelled "Preview") — a merchant-facing viewer, not a back-office console
Architecture
- Both apps are independent single-module projects on a hand-rolled MVP convention (Activity / Presenter / ProcessHandler / View), with a manual interactor factory and a custom OkHttp bearer-token authenticator
- Kotlin, Retrofit / OkHttp / Gson, AES-encrypted local storage for the PIN and token; the B2C app also ships Jetpack Compose alongside the View system