Layered Architecture
1 · Web / Mobile apps
React / Angular · customer, staff and admin dashboards
React / Angular · customer, staff and admin dashboards
2 · API gateway
TLS 1.3 · WAF · rate limiting · JWT validation
TLS 1.3 · WAF · rate limiting · JWT validation
3 · Services (Spring Boot)
Auth · Customer · Account · Loan · Deposit · Share · UPI · Notification
Auth · Customer · Account · Loan · Deposit · Share · UPI · Notification
4 · Data stores
PostgreSQL (core data) · Redis (cache) · Encrypted document store · Immutable audit store
PostgreSQL (core data) · Redis (cache) · Encrypted document store · Immutable audit store
5 · Integrations
Core banking · UPI / NPCI · CBS · KYC (UIDAI/PAN) · credit bureau · SMS / WhatsApp
Core banking · UPI / NPCI · CBS · KYC (UIDAI/PAN) · credit bureau · SMS / WhatsApp
This demo is static: the approval queue is held in browser localStorage. In production, the same actions call these APIs.
How Data Is Fetched & Stored
Example: customer views balance, then transfers money
CustomerOpens dashboard
➜
SystemAPI call with JWT
➜
SystemRBAC + branch check
➜
Bank CoreReads balance from DB
➜
SystemMasks fields → JSON
➜
CustomerSees balance
CustomerSubmits transfer
➜
SystemValidates + OTP
➜
Bank CoreDB transaction (debit, credit, ledger)
➜
SystemWrites audit record
➜
SystemNotification queued
Rules
WritesAtomic DB transactions, double-entry ledger
ReadsCached where safe, never for balances
DocumentsEncrypted object storage, signed URLs
AuditAppend-only, tamper-evident
Data Model (core tables)
Tables
| Table | Key fields |
|---|---|
| customers | customer_id, name, dob, mobile, email, kyc_status, branch_id |
| kyc_documents | doc_id, customer_id, type, masked_ref, file_url (encrypted), verified_by |
| accounts | account_no, customer_id, type, branch_id, status, opened_on |
| transactions | txn_id, account_no, type, amount, balance_after, channel, utr, created_at |
| deposits | deposit_id, type (FD/RD), principal, rate, tenure, maturity_date |
| loans | loan_id, customer_id, type, amount, rate, tenure, collateral_ref, status |
| emi_schedule | loan_id, due_date, principal, interest, status |
| shares | member_id, shares, face_value, dividend |
| upi_handles | vpa, account_no, device_id, status |
| approvals | request_id, type, maker, checker, status, remarks |
| audit_log | id, user, action, entity, ip, timestamp, hash |
API Samples
REST / JSON
GET /api/accounts/0124558804
{
"accountNo":"0124 5588 04",
"type":"SAVINGS",
"balance":245820.00,
"status":"ACTIVE",
"customerId":"CUS-100482"
}POST /api/loans
{
"type":"GOLD",
"weightGrams":50,
"purity":22,
"amount":300000,
"tenureMonths":12
}
→ 201 {"loanId":"LN-1042",
"status":"PENDING_APPROVAL"}