An end-to-end Online Banking System that mimics real-world banking platforms like ICICI, BOI, or HDFC. This system allows users to securely sign up, authenticate, send/receive money, and visualize transaction history. It also includes an advanced Fraud Detection System to identify suspicious transactions based on historical patterns.
- 🔧 System Architecture
- 🚀 Features
- 📂 Project Structure
- 🔐 Authentication & Security
- 🐳 Docker Setup
- 🛠️ Getting Started
- 📦 Tech Stack
- 🖼️ Application Screenshots
- 📊 Fraud Detection System
- 🤝 Contributors
- 📎 Useful Links
Before development, we invested several weeks designing a robust architecture covering:
- ✅ Functional & Non-Functional Requirements
- 🧬 High-Level Design (HLD)
- 🛠️ Low-Level Design (LLD)
- 🔄 Sequence Diagrams & Flow Diagrams
- JWT-based secure login/signup
- Asynchronous transaction processing via RabbitMQ
- Endpoints for user data, transactions, and token validation
- API weight limiting and pagination support
- Fully responsive & modern UI using TailwindCSS and ShadCN
- Signup/Login, Dashboard, Transaction History
- Money Transfer (Send/Receive) with real-time feedback
- Reusable components and modular code structure
- Machine Learning model that predicts fraud based on transaction patterns
- REST API for integrating predictions into transaction flow
- Built with Python + Flask and explained with Google Gemini
FinTech-Software/
│
├── java_backend/
├── Online-Banking-Application-Frontend/
├── ML-Model-For-Fraud-Detection-and-Risk-Analysis-API/
- Implemented full token-based security (JWT + Refresh Tokens)
- Secure password storage using hashing
- API protection via route-level guards
- Session timeout and token expiry handling
To ensure a consistent and collaborative development environment for all team members, we used Docker Compose to bundle our backend environment into a single unit.
java_backend-backend:latest
— Spring Boot backendmysql:8
— Database containerrabbitmq:3-management
— Queue for async transactions
All the above services are composed into one container named: java_backend
docker compose up -d
- This command will build the services and run them on the specified ports if not already available.
- Ensures backend + MySQL + RabbitMQ services are networked and running.
📌 Prerequisite: Docker must be installed and running on your system.
Here’s how to set up each part of the application.
📌 Prerequisites: Docker must be installed
-
Clone the backend repo:
git clone https://github.com/FinTech-Software/java_backend.git cd java_backend
-
Run Docker Compose:
docker compose up -d
This command builds the java_backend
container and spins up all services (Spring Boot
, MySQL
, RabbitMQ
) in one go.
📌 Prerequisite: Node.js (v18+) installed
-
Clone the frontend repo:
git clone https://github.com/FinTech-Software/Online-Banking-Application-Frontend.git cd Online-Banking-Application-Frontend
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
The fraud detection model is containerized and built with Flask. Please refer to the dedicated README for setup and usage instructions.
Layer | Technology Used |
---|---|
Backend | Spring Boot, MySQL, RabbitMQ, Java |
Frontend | React, TypeScript, Vite, TailwindCSS |
ML Model | Python, Flask, Scikit-learn, Pandas |
Auth/Security | JWT, Refresh Tokens, BCrypt |
DevOps | Docker, Docker Compose, GitHub Actions |
We developed a machine learning model capable of detecting fraudulent transactions using patterns in past data.
- Binary classification (Fraud vs Legitimate)
- RESTful API in Flask
- Google Gemini AI integration to explain predictions
- Real-time integration with backend for fraud alerts
Name | Role |
---|---|
Mohammed Varaliya | Project Lead, Backend, Frontend, ML Model & Integration, UI/UX, System Design |
Vraj Shah | Project Lead, Backend Development, Docker, Frontend, UI/UX, System Design |
Jayesh Mal | UI/UX, Frontend |
- 🔗 Backend Repo: java_backend
- 🔗 Frontend Repo: Online-Banking-Application-Frontend
- 🔗 ML Fraud Detection: ML Fraud API
- 🔗 System Design Workspace: Design Docs