Tranche
Shoppers buy now and pay in four installments; merchants get paid and see their orders. I built the whole thing: an Expo shopper app, a NestJS payments engine, and a Next.js merchant dashboard and staff console.
- Role
- Sole engineer
- Year
- 2026
- Stack
- Expo
- React Native
- Redux Toolkit
- NestJS
- PostgreSQL
- BullMQ
- Paystack
- Next.js
- Turborepo
Context
Buy-now-pay-later is mostly a scheduling and money-movement problem. Every order turns into a set of installments that have to be charged on time, reminded before they're due, and reconciled exactly, without the app and the server ever disagreeing about what's owed.
What I built
A Turborepo with one shared contract package: TypeScript types, Zod schemas, and the installment-schedule and naira-formatting functions, used by the app, the web, and the API so they compute the same numbers. The NestJS API records money in a double-entry ledger, charges saved cards through Paystack, and schedules payment reminders on BullMQ. The Expo app opens Paystack's hosted checkout in an in-app browser session and returns through a deep link.
Details
- Shopper app: catalog, pay-in-four plan picker with schedule preview, checkout, installment timeline, and early payment
- Push reminders before each installment is due, through Expo notifications
- Double-entry ledger in the payments engine, with Paystack for card charges and BullMQ for scheduled jobs
- Next.js merchant dashboard, staff console, and marketing site sharing the same contract package
- Docker images, a Render blueprint, and CI/CD for deployment
Status
Built end to end, with Docker and a Render blueprint configured for deployment.