Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💳 Banking Management System

A modern Banking Management System built with Java and Spring Boot, designed to simulate core banking operations such as account management, secure transactions, user authentication, and transaction history.

This project demonstrates backend software engineering principles including RESTful API development, layered architecture, security, database management, and clean code practices.


📌 Features

👤 User Management

  • User registration
  • Secure login and authentication
  • Profile management
  • Role-based authorization (Admin & Customer)

🏦 Account Management

  • Create bank accounts
  • View account details
  • Account balance inquiry
  • Multiple account support

💸 Transactions

  • Deposit funds
  • Withdraw funds
  • Transfer money between accounts
  • Transaction validation
  • Insufficient balance protection

📄 Transaction History

  • View complete transaction history
  • Search transactions
  • Filter by date
  • Account statements

🔒 Security

  • Spring Security authentication
  • JWT Token Authentication
  • Password encryption using BCrypt
  • Protected REST APIs
  • Role-based access control

📊 Admin Features

  • View all users
  • Manage accounts
  • Monitor transactions
  • Freeze/Activate accounts
  • Dashboard statistics

🛠️ Tech Stack

Backend

  • Java 21 (or Java 17)
  • Spring Boot
  • Spring MVC
  • Spring Data JPA
  • Spring Security
  • Hibernate
  • Maven

Database

  • MySQL
  • H2 Database (Development)

Authentication

  • JWT (JSON Web Tokens)
  • BCrypt Password Encoder

API Testing

  • Postman

Documentation

  • Swagger / OpenAPI

Tools

  • Git
  • GitHub
  • IntelliJ IDEA
  • VS Code

📂 Project Structure

banking-app/
│
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com.bank.app/
│   │   │
│   │   ├── controller/
│   │   ├── service/
│   │   ├── repository/
│   │   ├── entity/
│   │   ├── dto/
│   │   ├── security/
│   │   ├── config/
│   │   ├── exception/
│   │   └── util/
│   │
│   └── resources/
│       ├── application.properties
│       └── data.sql
│
├── pom.xml
├── README.md
└── .gitignore

🏗️ Architecture

The application follows a Layered Architecture.

Client
   │
REST API
   │
Controller Layer
   │
Service Layer
   │
Repository Layer
   │
Database (MySQL)

🚀 REST API Endpoints

Authentication

Method Endpoint Description
POST /api/auth/register Register user
POST /api/auth/login Login

Users

Method Endpoint Description
GET /api/users/profile Get profile
PUT /api/users/profile Update profile

Accounts

Method Endpoint Description
POST /api/accounts Create account
GET /api/accounts Get all accounts
GET /api/accounts/{id} Get account
DELETE /api/accounts/{id} Delete account

Transactions

Method Endpoint Description
POST /api/transactions/deposit Deposit
POST /api/transactions/withdraw Withdraw
POST /api/transactions/transfer Transfer
GET /api/transactions/history Transaction history

💾 Database Design

User

- id
- fullName
- email
- password
- role
- createdAt

Account

- id
- accountNumber
- accountType
- balance
- status
- userId

Transaction

- id
- amount
- type
- senderAccount
- receiverAccount
- timestamp

🔐 Security

The project implements:

  • JWT Authentication
  • Spring Security
  • Password Hashing (BCrypt)
  • Role-Based Authorization
  • Stateless Authentication
  • Protected API Endpoints

⚙️ Installation

Clone Repository

git clone https://github.com/yourusername/banking-management-system.git

Navigate

cd banking-management-system

Configure Database

Update:

src/main/resources/application.properties

Example:

spring.datasource.url=jdbc:mysql://localhost:3306/banking_db
spring.datasource.username=root
spring.datasource.password=password

spring.jpa.hibernate.ddl-auto=update

Build

mvn clean install

Run

mvn spring-boot:run

Application starts on:

http://localhost:8080

🧪 Testing

Run unit tests:

mvn test

API testing can be performed using:

  • Postman
  • Swagger UI

📈 Future Improvements

  • Email Notifications
  • SMS OTP Verification
  • Two-Factor Authentication (2FA)
  • Scheduled Transfers
  • Loan Management
  • Credit Card Services
  • Mobile Banking Support
  • Docker Deployment
  • Kubernetes Deployment
  • Redis Caching
  • CI/CD Pipeline
  • Microservices Architecture

📸 Screenshots

Add screenshots here once the frontend is completed.

/screenshots
├── login.png
├── dashboard.png
├── accounts.png
└── transactions.png

📚 Learning Objectives

This project demonstrates practical experience with:

  • Object-Oriented Programming
  • REST API Development
  • Spring Boot
  • Spring Security
  • Hibernate & JPA
  • Database Design
  • JWT Authentication
  • Exception Handling
  • Clean Architecture
  • Git & GitHub Workflow

🤝 Contributing

Contributions are welcome.

  1. Fork the repository
  2. Create a new feature branch
git checkout -b feature/new-feature
  1. Commit your changes
git commit -m "Add new feature"
  1. Push to your branch
git push origin feature/new-feature
  1. Open a Pull Request

📄 License

This project is licensed under the MIT License.


👨‍💻 Author

Pre2jasi

Backend Developer

  • Java
  • Spring Boot
  • REST APIs
  • MySQL
  • Spring Security
  • Hibernate
  • Maven

GitHub: https://github.com/pre2jasi

LinkedIn: https://linkedin.com/in/nwigboy


⭐ Support

If you found this project useful, consider giving it a ⭐ Star on GitHub.

About

A simple Java and Spring Boot Based application to demo a bank Application

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages