← All work
Fintech · Rewards platform · 2026
X2Factor
- Client
- X2Factor
- Role
- Lead engineer, full stack
- Year
- 2026

Overview
A live rewards platform at x2factor.com. Users complete tasks with proof uploads, earn referral commissions and daily streak bonuses, and withdraw to their bank via Flutterwave. Operators run it from a permissioned admin console.
The challenge
The platform pays out real money, so every naira that enters or leaves a wallet has to be explainable after the fact, by the user and by the operators. Trust in the ledger is the product.
What I built
- Three wallets per user (account, task earnings, referral) with a transaction ledger that records the balance before and after every movement, a unique reference, and the source of the money.
- Withdrawal flow with configurable fees and limits: funds are reserved when the user requests, then the transfer goes out through Flutterwave, and failed transfers are refunded automatically.
- Flutterwave webhooks verified by signature before any state changes; unknown event types are ignored rather than trusted.
- Admin console with role-based permissions enforced by a guard on every endpoint, covering task review, withdrawals, wallets, plans, support tickets and site content, with an audit log that records old and new values for admin actions.
- Hardened API: Helmet headers, request throttling, proof uploads to S3, and transactional email via Resend.
Stack
- Next.js
- NestJS
- TypeScript
- PostgreSQL (Neon)
- Drizzle ORM
- Flutterwave
- AWS S3
- Resend
- Turborepo
Results
- Live, paying out real money through Flutterwave