Case study 01 · On-demand marketplace
Food delivery, laundry, cleaning, gas refill and last-mile logistics on one platform: three published Flutter apps (Customer, Vendor, Rider), an admin panel and a public website, all powered by a single ASP.NET Core 8 backend.
- Role
- Full-Stack Engineer · Backend + Mobile
- When
- Jan 2026 – Sep 2026
Screens
What I did
Led the end-to-end migration of payments from two legacy gateways (Poggah, Monnify) to Nomba: a 7-operation backend integration with HMAC-SHA512 webhook verification, idempotent processing, thread-safe OAuth token caching and automatic reversal of failed payouts.
Carried the migration through all three Flutter apps, re-architecting wallet top-up around Nomba virtual accounts with zero breaking changes to the mobile API contract.
Upgraded the ~80K-line backend from end-of-life .NET Core 3.1 to .NET 8 / EF Core 8, resolving cascade-delete migration conflicts and making the platform deployable on Linux.
Owned mobile release engineering: fixed native build failures on Xcode 26.1 / Clang 18, repaired Codemagic CI and TestFlight versioning, and configured Play Store signing, unblocking releases for all three apps.
Integrated Firebase Cloud Messaging platform-wide: backend push delivery, per-user FCM token registration, duplicate-initialization crash fixes and custom native notification sounds.
Diagram
One backend, five surfaces
Every client talks to the same ASP.NET Core 8 API. Hover a node to trace its line.
Diagram
Nomba payment flow
From a wallet top-up to a verified ledger entry. Click any step, or let it play.
Top-up →The wallet top-up flow is rebuilt around Nomba virtual accounts, with no breaking changes to the mobile API contract.
↺ Failed payout → the transaction is automatically reversed.
Built with
- ASP.NET Core 8
- EF Core 8
- SQL Server
- Flutter
- GetX
- Firebase
- Nomba
- Google Maps

