
Product · Financial Services & Microfinance · 2026
Vayoo
An admin-first, ledger-backed operations platform for personal loans, cheque cashing, gold buy, and currency exchange in a single tenant model.
Challenge
Microfinance operators (cheque cashing, gold buy, FX, short-term loans) typically operate on a stitch of spreadsheets, paper receipts, and per-product legacy software — none of which agree about what cash is in the till at end of day. Regulatory expectations are rising. The brief: build one platform where the till, the loan book, the FX inventory, and the gold log all roll up into one auditable money model, with tenant isolation so a multi-branch operator can run several locations without crossover.
Approach
Built Next.js 15 + Prisma + Supabase Postgres as the core, with Supabase Auth for staff identity and Supabase Storage for private customer documents and ID images.
Designed a ledger-backed money model from day one — every till transaction, loan disbursement, cheque cashed, gold purchase, and FX trade lands on a double-entry-style journal with reconciliation tooling, not a free-floating balance.
Enforced tenant isolation via Prisma + SQL RLS policies that live in the migration files (the schema is the source of truth, not a separate policy document).
Layered Upstash Redis for rate limiting, idempotency keys, short-lived locks on till operations, and cached FX rate snapshots.
Built a forms-heavy UI on React Hook Form + Zod with shared validation between server actions and clients, plus a full QA harness covering form alignment, cheque cashing parity with the legacy tool, and approval-flow regression.
Added approvals on operations above per-role thresholds (e.g. cash advances over a tier limit) with audit trail and per-action reasoning.
Outcome
End-of-day reconciliation moves from "count and pray" to a tally against a journal the system kept all day. Multi-branch operators run several locations under one tenant boundary with no data crossover, and the audit trail satisfies the standards a regulator or acquirer expects without manual evidence collection.
The stack we used.
- Next.js 15 App Router
- TypeScript (strict)
- Prisma + Supabase Postgres
- Supabase Auth + Storage
- Upstash Redis
- React Hook Form + Zod
- Playwright (QA harness)
More work.
Our own product
We build for clients on the same bench.
The team, the stack and the standards behind this product are the ones your project gets.


