Case study · Live demo
Bankvole
Bankvole is a client-built banking platform covering the surface area you would expect of a real consumer fintech: account creation, balances, transfers, transaction history, and the operational tooling needed to keep it running. The work spanned product UX, account flows, and the money-movement primitives that sit underneath them.
Problem
Banking products fail on two fronts: ledger integrity and onboarding friction. A demo platform that wants to feel like the real thing has to honour both — every credit needs a debit, every state transition needs an audit trail, and the user-facing flow needs to stay legible while the engine underneath stays defensive. The platform also needed to be observable enough that issues surface before users hit them, not after.
Approach
The system was structured around clear boundaries between identity, ledger, and presentation. Account flows were modelled as state machines with explicit transitions so reconciliation can be reasoned about rather than reverse-engineered. Money movement was kept double-entry from day one — every transaction writes a balanced pair of postings, and balances are derived rather than mutated in place. Idempotency keys guard the API surface against retries and duplicate submissions. Observability was built in from the start: structured logs on every state change, traces across the request boundary, and alerts on the things that actually matter (failed postings, drift between source and destination balances, latency on the critical path).
Outcome
The platform runs as a live demo and serves as a proof point for production-adjacent fintech UX without leaning on a hosted core-banking provider for the parts that matter most. Account flows behave the way real banking flows do, including the edge cases that usually get hidden behind a happy path. The architecture leaves room to swap the underlying providers without rewriting the product surface.