Open the account
A user lands on a mobile money-style dashboard with balances shown in local currency and USDC.
Pula Pay is a full-stack fintech prototype for managing USDC wallets, fiat on/off-ramp flows, and peer-to-peer transfers through a mobile experience that feels familiar while the backend behaves like a real financial system.
The demo is framed around the strongest moment: send money by phone while Circle signs the USDC transfer.
The story should move like a product trailer: dashboard, recipient, amount, secure signing, completion. Each shot reveals a user benefit and one engineering reason to trust the system.
A user lands on a mobile money-style dashboard with balances shown in local currency and USDC.
The recipient is resolved by phone number, hiding wallet-address complexity from the user.
The backend creates a transfer challenge and the mobile app resolves it through the native PIN flow.
The transaction progresses through a strict state machine and writes balanced ledger entries.
The technical story is not a stack list. It is a control story: isolate financial rules in the domain, talk to providers through ports, and make async payment flows observable, retryable, and auditable.
A mobile money experience backed by self-custodied USDC and ledger-grade accounting.
Circle handles user-controlled wallet signing, Coinbase CDP handles fiat rails, and the backend keeps the business invariants independent from both providers.
React Native, Expo Router, Zustand, Circle SDK
Express, TypeScript, Better Auth, Zod validation
Command and query handlers for wallet, transfer, deposit, withdrawal
Wallet, User, Transaction, Money, XState machines, ledger service
PostgreSQL, Prisma, Redis, BullMQ, Circle, Coinbase CDP
These are the details to surface in screenshots, captions, interview answers, and the architecture slide. They tell reviewers this is more than a CRUD app.
User-controlled Circle wallets on Base
Fiat on/off-ramp through Coinbase CDP
Double-entry ledger with debit/credit invariants
XState transaction and wallet state machines
Idempotent commands and retry-safe async jobs
Expo mobile app with secure token storage
The portfolio page should make the value obvious, but the spoken explanation needs to be ready too. These can be reused in interviews and demo videos.
Pula Pay is a universal African money account that lets users buy, hold, send, and cash out USDC through a mobile-first experience.
I built a fintech prototype with a React Native app and a clean TypeScript backend. Users get Circle user-controlled wallets, fiat on/off-ramp through Coinbase CDP, and peer-to-peer transfers by phone number. Under the hood, the system uses XState for transaction lifecycles, BullMQ for async payment polling, and a double-entry ledger so money movement stays auditable.