A secure, production-shaped net-banking platform built with Spring Boot and React.
Live App · API Health · Swagger · Source
Finova is a full-stack net-banking system inspired by real-world retail banking flows. It covers account management, ACID money transfers, transaction history, admin fraud oversight, immutable audit trails, scheduled statements and interest, resilient third-party integrations, TOTP two-factor authentication, and observability — all behind a React single-page application.
Base currency: INR.
| Service | Platform | URL |
|---|---|---|
| Web application | Cloudflare Pages | https://finova-cik.pages.dev |
| REST API | Render | https://finova-net-banking-application.onrender.com |
| API ping | Render | https://finova-net-banking-application.onrender.com/api/v1/ping |
| Health check | Render | https://finova-net-banking-application.onrender.com/actuator/health |
| Swagger UI | Render | https://finova-net-banking-application.onrender.com/swagger-ui.html |
| Source code | GitHub | gopal5587/Finova---Net-Banking-Application |
Browser
│
▼
Cloudflare Pages React + TypeScript (Vite)
│
│ HTTPS
▼
Render Spring Boot 3.3 API
│
├── Neon PostgreSQL 16 (Flyway migrations)
└── Upstash Redis (balance cache)
Note: The Render free tier sleeps after ~15 minutes of inactivity. The first request after idle may take 30–60 seconds to respond.
| Area | Capabilities |
|---|---|
| Accounts | Savings & current accounts, masked PAN, AES-256-GCM encryption at rest |
| Transfers | Deposits, withdrawals, P2P transfers with pessimistic locking & ACID guarantees |
| Security | JWT auth, BCrypt passwords, TOTP 2FA, role-based access (USER / ADMIN) |
| Admin | Account freeze/unfreeze, fraud flag review, on-demand job triggers |
| Fraud | Advisory rules — large amounts, velocity bursts, odd-hour transfers |
| Auditing | Hibernate Envers, @Auditable AOP, structured JSON audit logs |
| Scheduling | Monthly savings interest & account statements via Quartz |
| Integrations | Sandbox Stripe/PayPal, FX rates, weather, maps, hash-linked ledger sim |
| Observability | Micrometer, Prometheus metrics, Grafana dashboards (local stack) |
| Frontend | Login/MFA, dashboard, accounts, transfers, history, admin panel |
| Layer | Technology |
|---|---|
| Backend | Java 21, Spring Boot 3.3, Spring Security, Spring Data JPA |
| Database | PostgreSQL 16, Flyway migrations |
| Cache | Redis (distributed) + Caffeine (in-process) |
| Money | BigDecimal (scale 2, HALF_EVEN), @Transactional |
| Security | JWT, BCrypt, TOTP 2FA, AES-256-GCM |
| Auditing | Hibernate Envers, AspectJ AOP, Logback |
| Scheduling | Quartz |
| Resilience | Resilience4j (retry, circuit breaker) |
| Frontend | React 19, TypeScript, Vite, React Router |
| Local infra | Docker Compose (Postgres, Redis, Prometheus, Grafana) |
| Production | Render · Neon · Upstash · Cloudflare Pages |
- Docker Desktop
- Java 21 + Maven (only if running backend outside Docker)
- Node.js 20+ (only if running frontend outside Docker)
git clone https://github.com/gopal5587/Finova---Net-Banking-Application.git
cd Finova---Net-Banking-Application
docker compose up --build postgres redis app frontend| Service | URL |
|---|---|
| Web UI | http://localhost:5173 |
| API | http://localhost:8080/api/v1/ping |
| Swagger | http://localhost:8080/swagger-ui.html |
| Prometheus | http://localhost:9090 |
| Grafana | http://localhost:3000 (admin / admin) |
Default admin (local only): admin / Admin@12345
docker compose up -d postgres redis
# Backend — Postgres on host port 5433
cd backend && mvn spring-boot:run
# Frontend
cd frontend && npm install && npm run devWith the API running locally:
k6 run loadtest/transfers.jsAll settings are environment-driven. Copy .env.example to .env for local overrides.
The sandbox profile (default) simulates all external integrations — no real API keys required.
Key variables for production:
| Variable | Purpose |
|---|---|
DB_URL |
JDBC PostgreSQL connection string |
REDIS_URL |
Redis URL (rediss:// for Upstash) |
JWT_SECRET |
Base64-encoded signing key |
AES_SECRET |
Base64-encoded 32-byte AES key |
ADMIN_PASSWORD |
Seeded admin account password |
FINOVA_CORS_ORIGINS |
Allowed frontend origins (comma-separated) |
VITE_API_BASE_URL |
Render API URL (Cloudflare Pages build-time) |
| Guide | Stack |
|---|---|
| docs/DEPLOY-CLOUD.md | Render + Neon + Upstash + Cloudflare Pages (free tier) |
| docs/DEPLOY.md | AWS ECS / GCP Cloud Run |
├── backend/ Spring Boot API, Flyway migrations, Docker image
├── frontend/ React SPA (Vite)
├── docs/ Deployment guides
├── loadtest/ k6 transfer stress script
├── monitoring/ Prometheus & Grafana provisioning
└── docker-compose.yml
Gopal Yadav — GitHub
Built as a portfolio-grade net-banking system — from local Docker to cloud deployment.