Flagship fintech system

Universal African money account.

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.

9:41Base
Available balance
124,800 XOF
203.18 USDC
DepositSendWithdraw
Transfer
Recipient+229 61 23 45 67
Found
Amount25,000 XOF
40.65 USDC
Circle challengePIN confirmation required

The demo is framed around the strongest moment: send money by phone while Circle signs the USDC transfer.

Cinematic demo

Simple on screen. Serious underneath.

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.

01

Open the account

A user lands on a mobile money-style dashboard with balances shown in local currency and USDC.

02

Send by phone

The recipient is resolved by phone number, hiding wallet-address complexity from the user.

03

Sign with Circle

The backend creates a transfer challenge and the mobile app resolves it through the native PIN flow.

04

Track the movement

The transaction progresses through a strict state machine and writes balanced ledger entries.

Architecture story

Clean architecture for money movement.

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.

ExpressTypeScriptPrismaXStateBullMQReact NativeCircleCoinbase CDP
01

Mobile app

React Native, Expo Router, Zustand, Circle SDK

02

API layer

Express, TypeScript, Better Auth, Zod validation

03

Application layer

Command and query handlers for wallet, transfer, deposit, withdrawal

04

Domain core

Wallet, User, Transaction, Money, XState machines, ledger service

05

Infrastructure

PostgreSQL, Prisma, Redis, BullMQ, Circle, Coinbase CDP

Proof points

Signals that raise the ceiling.

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

Concise explanations

Three pitches for one project.

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.

10 seconds

Pula Pay is a universal African money account that lets users buy, hold, send, and cash out USDC through a mobile-first experience.

30 seconds

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.