Back to Projects
Mobile Wallet Client Interface
Click to Expand
Feature 1 of 3

Mobile Wallet Client Interface

React Native mobile client dashboard showing user balance, quick transfer action, and real-time transaction history.

P-Wallet

Fullstack Developer

E-Wallet & Double-Entry Ledger System

Demo Video2026

An e-wallet and double-entry ledger system engineered with NestJS as a centralized API Gateway that aggregates modular services and routes financial operations to a decoupled transaction processing engine built with Spring Boot 3. It prevents database deadlocks during concurrent transactions through lexicographical UUID lock sorting, and offloads background tasks like identity verification (KYC) and notifications asynchronously to Apache Kafka and Redis.

Technologies Leveraged

Java Spring BootJava Spring BootNestJSNestJSReact NativeReact NativeTanStack QueryTanStack QueryZustandZustandNext.jsNext.jsPostgreSQLPostgreSQLRedisRedisKafkaKafkaAWSAWSDockerDocker

The Problem & Challenge

Processing high-concurrency financial transactions often leads to balance discrepancies or database deadlocks due to overlapping simultaneous updates on the same account. Furthermore, executing resource-intensive compliance tasks, such as identity verification (KYC) or anti-money laundering (AML) checks, synchronously within the main request thread degrades transaction processing latency.

The Engineering Solution

I architected the platform with NestJS acting as a centralized API Gateway that aggregates modular services and routes financial operations to a decoupled core transaction engine built with Spring Boot 3 and Hibernate. The transaction engine utilizes append-only double-entry ledger journaling to guarantee absolute balance consistency, eliminating database deadlocks through a lexicographical UUID lock-sorting sequence on wallet entries before execution, and offloading heavy tasks asynchronously via Apache Kafka and Redis.

Technical System Architecture

1

Decoupled core financial transaction service built with Java 21 and Spring Boot 3, managing core financial ledger entries via an append-only double-entry database.

2

Centralized NestJS API Gateway monorepo that manages modular services, routes incoming financial requests to the Spring Boot transaction service, and uses Prisma ORM to manage PostgreSQL schemas for user identity, KYC verification, and backoffice administration.

3

Enforced lexicographical lock sorting sequence on wallet UUIDs to prevent database deadlocks during concurrent transfers.

4

Asynchronous background processing for multi-channel notifications and KYC state update streams using Apache Kafka.

Key System Highlights

Concurrency Lock Sorting

Enforces resource locking order based on wallet UUIDs to prevent database deadlocks during highly concurrent transfers.

Append-Only Ledger

Every transaction is recorded using append-only double-entry bookkeeping with no modifications or deletions allowed, preserving a complete audit trail.

Solvency & Liquidity Audits

Monitors and calculates aggregate balances to verify consistency between system reserves and total user deposits.

Kafka Async Event Bus

Decouples event handling into dedicated background workers that process Kafka streams to dispatch push notifications (Expo) with email fallbacks, stream KYC changes, and trigger alerts without blocking core transaction threads.