All work
2023 — 2024
9jaPay — Business banking, shipped in five weeks
Led the frontend architecture and delivery of a business banking MVP for Nigerian SMEs. From onboarding through KYC/KYB to transactions, owned end-to-end.
- Client
- 9jaPay
- Role
- Senior Frontend Engineer · Frontend Lead
- Year
- 2023 — 2024
- Stack
- ReactTypeScriptNext.jsGraphQLReact QuerySentryTailwind CSS

The brief
9jaPay's product team had a hard constraint: the business banking MVP had to be in customers' hands within five weeks. The platform needed to handle the full lifecycle — onboarding, business verification, account creation, transfers, and a credible-looking ledger — without cutting corners on the things banking customers actually notice.
I came in to lead the frontend architecture and ship the product end-to-end alongside a backend team and a designer.
Approach
- Typed contracts first. I started by codifying the GraphQL schema as TypeScript types and building a thin React Query layer on top. Components consumed typed data — never raw responses — which made the testing story much simpler.
- A small, opinionated component system. Buttons, inputs, money displays, KYC step indicators, transaction rows. Twenty primitives, composed everywhere, accessible from the first commit.
- A real onboarding flow. Multi-step KYC/KYB with optimistic state, recoverable errors, and a saved-progress contract so users could pick up where they left off.
- Observability from day one. Sentry was wired in before the first deploy, with custom breadcrumbs around financial operations. Production incidents were diagnosable in minutes, not days.
Outcome
- Shipped in 5 weeks without sacrificing the testing and observability story.
- Cut incident resolution time by giving every error a Sentry breadcrumb trail.
- Held the regression rate flat across three subsequent releases — the type system and component contracts caught issues before they shipped.




