Skip to content

Akash-Adak/VASTA-Bank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

419 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

β–ˆβ–ˆβ•—   β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ•—  β–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—    β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•
β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• 
β•šβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘β•šβ•β•β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•— 
 β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•—
  β•šβ•β•β•β•  β•šβ•β•  β•šβ•β•β•šβ•β•β•β•β•β•β•   β•šβ•β•   β•šβ•β•  β•šβ•β•    β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•šβ•β•  β•šβ•β•β•β•β•šβ•β•  β•šβ•β•

### **Enterprise-Grade Full-Stack Digital Banking Platform**

Microservices Β· Event-Driven Β· Cloud-Native Β· Production-Ready


Live Demo License Docker Java Spring Boot React Kafka Kubernetes


πŸ“Œ Table of Contents


🏦 Project Overview

VASTA Bank is a real-world, production-inspired enterprise banking platform β€” not a CRUD demo.

It simulates how modern FinTech companies architect digital banking systems at scale: distributed microservices with clearly defined boundaries, event-driven communication via Kafka, bank-grade JWT security, payment gateway integration, real-time monitoring, and full Kubernetes orchestration.

Built to demonstrate mastery of backend engineering, distributed systems, DevOps, and cloud-native architecture β€” all in a single cohesive project.


✨ Why VASTA Bank Stands Out

Capability Implementation
πŸ” Bank-Grade Security JWT RS256 + RBAC + Redis token management + BCrypt
⚑ Real-Time Event Streaming Apache Kafka for transactions, notifications, auditing
πŸ’³ Live Payment Gateway Razorpay integration for real money flow
🧩 True Microservices 9 independently deployable services
🌐 Service Discovery Netflix Eureka + Feign Clients
πŸ“Š Full Observability Prometheus + Grafana dashboards
🐳 One-Command Startup Docker Compose β€” everything up instantly
☸️ Kubernetes Ready HPA auto-scaling, rolling deployments, health probes
⚑ High Performance Redis caching for low-latency reads
πŸ§ͺ Production Reliability DB transactions, pessimistic locking, Kafka DLQ

πŸ—οΈ System Architecture

                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                               β”‚                CLIENT LAYER                  β”‚
                               β”‚        React + Vite Frontend (SPA)           β”‚
                               β”‚   Customer Portal Β· Admin Dashboard          β”‚
                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚ HTTPS
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚                           API GATEWAY (8080)                         β”‚
                    β”‚  JWT Validation Β· Rate Limiting Β· Routing Β· API Security Β· Logging  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚        β”‚        β”‚        β”‚        β”‚        β”‚        β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ” β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β” β”Œβ”€β–Όβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚   Auth Service      β”‚ β”‚User Serv.β”‚ β”‚Account   β”‚ β”‚Txn    β”‚ β”‚Loan   β”‚ β”‚Paymentβ”‚ β”‚Notif    β”‚
       β”‚   (8081)            β”‚ β”‚ (8082)   β”‚ β”‚Service   β”‚ β”‚Serviceβ”‚ β”‚Serviceβ”‚ β”‚Serviceβ”‚ β”‚Service  β”‚
       β”‚ JWT Β· OAuth2 Β· RBAC β”‚ β”‚Profiles  β”‚ β”‚(8083)    β”‚ β”‚(8084) β”‚ β”‚(8086) β”‚ β”‚(8087) β”‚ β”‚(8085)   β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                     β”‚              β”‚            β”‚          β”‚         β”‚         β”‚         β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ KYC Service            β”‚ β”‚ Fraud Det. β”‚ β”‚ Admin    β”‚ β”‚ Audit   β”‚ β”‚ Report  β”‚ β”‚ Config  β”‚ β”‚ Search  β”‚
  β”‚ Identity Verification  β”‚ β”‚ Risk Check β”‚ β”‚ Service  β”‚ β”‚ Service β”‚ β”‚ Service β”‚ β”‚ Service β”‚ β”‚ Service β”‚
  β”‚ Document Validation    β”‚ β”‚ ML Rules   β”‚ β”‚ Controls β”‚ β”‚ Logs    β”‚ β”‚ BI Data β”‚ β”‚ Feature β”‚ β”‚ Global  β”‚
  β”‚ Aadhaar / PAN APIs     β”‚ β”‚ AML Check  β”‚ β”‚ Roles    β”‚ β”‚ History β”‚ β”‚ Export  β”‚ β”‚ Flags   β”‚ β”‚ Search  β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                β”‚                   β”‚            β”‚           β”‚           β”‚           β”‚           β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                       β”‚                     KAFKA EVENT BUS                        β”‚
                       β”‚ account.events Β· transaction.events Β· loan.events         β”‚
                       β”‚ payment.events Β· notification.events Β· audit.events       β”‚
                       β”‚ fraud.events Β· kyc.events                                  β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                           β”‚                           β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ MySQL Cluster  β”‚          β”‚ Redis Cluster  β”‚           β”‚ Elasticsearch  β”‚
 β”‚ Transactions   β”‚          β”‚ Cache Β· Tokens β”‚           β”‚ Logs Β· Search  β”‚
 β”‚ Accounts       β”‚          β”‚ Rate Limits    β”‚           β”‚ Audit Queries  β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                Service Discovery & Infrastructure Layer                   β”‚
 β”‚                                                                           β”‚
 β”‚  Eureka Server Β· Config Server Β· Distributed Tracing (Zipkin/Jaeger)     β”‚
 β”‚  Centralized Logging (ELK Stack) Β· Circuit Breaker (Resilience4j)        β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                   Observability & DevOps Layer                            β”‚
 β”‚                                                                           β”‚
 β”‚  Prometheus Β· Grafana Β· Alertmanager Β· Loki                               β”‚
 β”‚  Kubernetes HPA Β· CI/CD (GitHub Actions / ArgoCD)                         β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🧩 Backend Microservices

Each service is independently deployable, owns its own database schema, and communicates asynchronously via Kafka and synchronously via Feign Clients where needed.

Service Registry

Service Port Responsibility
API Gateway 8080 Single entry point β€” JWT validation, rate limiting, intelligent routing
Auth Service 8081 Login, registration, JWT RS256 issuance, refresh token lifecycle
User Service 8082 User profiles, KYC management, account linking
Account Service 8083 Bank account creation, balance management, account types
Transaction Service 8084 Fund transfers, transaction validation, history & ledger
Notification Service 8085 Email, SMS, in-app alerts triggered by Kafka events
Loan Service 8086 Loan applications, EMI calculations, repayment lifecycle
Kyc Service 8087 Identity verification, document upload (PAN/Aadhaar), KYC approval workflow
Admin Service 8088 Admin dashboard, user management, system-wide oversight
Payment Service 8089 Razorpay integration β€” money top-up, payment verification
Eureka Server 8761 Service discovery & health registry for all microservices

πŸ” Security Model

VASTA Bank implements bank-grade, multi-layered security throughout the entire stack.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SECURITY LAYERS                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  1. JWT RS256          Asymmetric signing (private/public)  β”‚
β”‚  2. RBAC               ADMIN / MANAGER / USER roles         β”‚
β”‚  3. Redis Token Store  Stateless sessions with revocation   β”‚
β”‚  4. BCrypt Hashing     Salted password storage              β”‚
β”‚  5. OTP Verification   High-value transaction approval      β”‚
β”‚  6. Rate Limiting      API Gateway β€” per-IP request limits  β”‚
β”‚  7. IP Tracking        Suspicious access detection          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Why RS256? Unlike HS256 (symmetric), RS256 uses a private key to sign and a public key to verify β€” meaning only the Auth Service can issue tokens, while all other services can validate them without knowing the secret. True zero-trust design.


πŸ–₯️ Frontend (React + Vite)

Stack: React Β· Vite Β· Tailwind CSS Β· Axios Β· JWT Auth Flow

Features:

  • πŸ”‘ JWT-based authentication with token refresh
  • πŸ‘€ Role-based UI β€” Admin sees different panels than Users
  • πŸ’Έ Real-time fund transfer with OTP confirmation
  • πŸ“ˆ Transaction history with filtering & pagination
  • 🏦 Loan application wizard with EMI preview
  • πŸ’³ Razorpay payment modal for account top-up
  • πŸ“± Fully responsive across all screen sizes

πŸ“Š Monitoring & Observability

Full observability stack for understanding system health in real time.

Tool Purpose
Prometheus Scrapes metrics from Spring Boot Actuator endpoints
Grafana Dashboards for visualization and alerting
Spring Actuator Exposes /actuator/metrics, /health, /info

**Tracked Metrics:** - πŸ“ˆ Request throughput & latency (p50, p95, p99) - ❌ HTTP error rates per service - πŸ” Kafka consumer lag per topic - 🧠 JVM heap usage, GC pauses, thread count - πŸ’Ύ MySQL query performance & connection pool - ⚑ Redis cache hit/miss ratio - πŸ’° Business metrics: transactions/sec, loan approvals/hr

🐳 DevOps & Deployment

Docker Compose (Local / Dev)

The entire platform runs with a single command:

# Clone the repository
git clone https://github.com/Akash-Adak/VASTA-Bank.git
cd VASTA-Bank

# Start all services
docker-compose up -d

# Stop all services
docker-compose down

Services started automatically:

  • All 11 microservices
  • MySQL (with schema auto-init)
  • Redis
  • Apache Kafka + Zookeeper
  • Prometheus + Grafana
  • Eureka Server

⏳ First startup may take 3–5 minutes as images are pulled and services initialize.


☸️ Kubernetes (K8s)

VASTA Bank is fully Kubernetes-ready for production-grade deployment.

K8s Features:

  • ☸️ HPA (Horizontal Pod Autoscaler) β€” services auto-scale under load
  • πŸ”„ Rolling Deployments β€” zero-downtime updates
  • πŸ₯ Liveness & Readiness Probes β€” automatic restart of unhealthy pods
  • πŸ”’ Secrets management β€” credentials never in plain config
  • πŸ“‘ Service mesh ready β€” clean service-to-service communication
  • πŸ“Š Prometheus + Grafana deployed in-cluster for full observability
# Deploy to Kubernetes
kubectl apply -f k8s/

# Check status
kubectl get pods -n vasta-bank

# Scale a service manually
kubectl scale deployment transaction-service --replicas=3 -n vasta-bank

πŸ› οΈ Tech Stack

Backend

Technology Version Usage
Java 17 Core language
Spring Boot 3.x Microservice framework
Spring Security 6.x Auth & RBAC
Spring Cloud Gateway Latest API Gateway
Spring Cloud Eureka Latest Service Discovery
Spring Cloud OpenFeign Latest Sync inter-service calls
Apache Kafka Latest Event streaming
MySQL 8.x Primary database
Redis 7.x Caching & token store
Razorpay Java SDK Latest Payment gateway

Frontend

Technology Usage
React UI framework
Vite Build tool & dev server
Tailwind CSS Utility-first styling
Axios HTTP client
React Router Client-side routing
Context API Global state management

DevOps & Infrastructure

Technology Usage
Docker Service containerization
Docker Compose Local orchestration
Kubernetes Production orchestration
Helm (optional) K8s package management
Prometheus Metrics collection
Grafana Visualization & alerting
Spring Boot Actuator Metrics endpoint exposure

πŸš€ Quick Start

Prerequisites

βœ… Docker & Docker Compose
βœ… Git
βœ… (Optional) kubectl + K8s cluster for K8s deployment

Run with Docker Compose

git clone https://github.com/Akash-Adak/VASTA-Bank.git
cd VASTA-Bank
docker-compose up -d

Run on Kubernetes

# Apply all manifests
kubectl apply -f k8s/

# Watch pods come up
kubectl get pods -n vasta-bank --watch

🌐 Service Access URLs

Service URL Description
Frontend http://localhost:9090 React + Vite app
API Gateway http://localhost:8080 Single entry point
Auth Service http://localhost:8081 Auth endpoints
User Service http://localhost:8082 User/KYC endpoints
Account Service http://localhost:8083 Account management
Transaction Service http://localhost:8084 Fund transfers
Notification Service http://localhost:8085 Alert management
Loan Service http://localhost:8086 Loan lifecycle
Kyc Service http://localhost:8087 Kyc lifecycle
Admin Service http://localhost:8088 Admin dashboard
Payment Service http://localhost:8089 Razorpay integration
Eureka Dashboard http://localhost:8761 Service registry
Grafana http://localhost:3000 Monitoring dashboards
Prometheus http://localhost:9090 Metrics explorer

πŸ‘¨β€πŸ’» What This Project Proves

Skill Domain Demonstrated By
Backend Engineering 9 Spring Boot microservices with clean service boundaries
Distributed Systems Kafka, Eureka, Feign, Redis across services
Security RS256 JWT, RBAC, Redis sessions, OTP, BCrypt
Payment Systems Real Razorpay integration with signature verification
Event-Driven Design Kafka producers/consumers with DLQ and retry
DevOps Docker, Docker Compose, full K8s manifests with HPA
Observability Prometheus metrics + Grafana dashboards
Frontend React + Vite + Tailwind with role-based UI
System Design End-to-end ownership β€” infra, backend, frontend

🀝 Contributing & Feedback

Contributions, suggestions, and reviews are welcome.

If you are an interviewer, reviewer, or recruiter β€” feel free to explore the codebase deeply. Every architectural decision is intentional and documented.

# Raise an issue
https://github.com/Akash-Adak/VASTA-Bank/issues

# Submit a PR
Fork β†’ Branch β†’ Commit β†’ Pull Request

πŸ“„ License

MIT License β€” free to use, modify, and distribute with attribution.

Built with precision. Designed for scale. Ready for production.

VASTA Bank β€” Enterprise Digital Banking, End to End.

About

A production-grade banking system leveraging Spring Boot, Kafka, Docker, and JWT for secure, scalable, real-time financial operations.

Topics

Resources

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages