BetPay
[ IN DEV ]My side project: an automated deposit/withdrawal pipeline between mobile money and betting platforms. The SaaS deploys soon, backed by a phone farm and a full management portal.
- Flutter
- Kotlin
- Node.js
- Socket.io
- PostgreSQL
- OCR
- Phone farm
The problem
Funding a 1xBet account from mobile money in Burkina Faso is a manual chat with an agent. The “before” image above is real: a service advertised on Facebook, operated person by person over WhatsApp, with every transaction typed by hand.
BetPay automates the loop. A customer requests a deposit or withdrawal in a simple Flutter app, and the operator side executes and verifies it, with every step audited.
The architecture
The design question that shaped everything: what is each side allowed to do?
The client app (Flutter) has no authentication, no business logic, and no secrets.
It validates input for UX only and speaks a documented JSON protocol over
WebSocket, with client-generated UUIDs and a status state machine
(PENDING → PROCESSING → SUCCESS/FAILED/TIMEOUT). If the operator is offline
after five backoff retries, the app composes a pre-filled WhatsApp message, which
turns downtime into a logged conversation instead of a lost customer.
The admin app (Kotlin) holds everything sensitive. It integrates the MobCash agent API, auto-verifies operator SMS confirmations, and runs OCR with confidence scoring on balance screenshots before approving anything. The untrusted surface contains nothing worth attacking; the trusted surface lives on hardware the operator controls.
A multi-role web portal (agent, affiliate, admin, superadmin) sits on the same WebSocket backend. Agents get a dashboard and referral codes with automatic 1% commission tracking, so a one-man WhatsApp operation becomes a service other agents can resell.
Where it’s going
The SaaS version deploys soon. Execution moves to a phone farm, so transactions run across a bank of managed devices instead of one operator’s handset, and the portal grows into full fleet management: device health, throughput, per-agent accounting. The protocol was written down before the code, which is the main reason the same backend has survived three generations of front end.