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.
- User registration
- Secure login and authentication
- Profile management
- Role-based authorization (Admin & Customer)
- Create bank accounts
- View account details
- Account balance inquiry
- Multiple account support
- Deposit funds
- Withdraw funds
- Transfer money between accounts
- Transaction validation
- Insufficient balance protection
- View complete transaction history
- Search transactions
- Filter by date
- Account statements
- Spring Security authentication
- JWT Token Authentication
- Password encryption using BCrypt
- Protected REST APIs
- Role-based access control
- View all users
- Manage accounts
- Monitor transactions
- Freeze/Activate accounts
- Dashboard statistics
- Java 21 (or Java 17)
- Spring Boot
- Spring MVC
- Spring Data JPA
- Spring Security
- Hibernate
- Maven
- MySQL
- H2 Database (Development)
- JWT (JSON Web Tokens)
- BCrypt Password Encoder
- Postman
- Swagger / OpenAPI
- Git
- GitHub
- IntelliJ IDEA
- VS Code
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
The application follows a Layered Architecture.
Client
│
REST API
│
Controller Layer
│
Service Layer
│
Repository Layer
│
Database (MySQL)
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register | Register user |
| POST | /api/auth/login | Login |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/users/profile | Get profile |
| PUT | /api/users/profile | Update profile |
| 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 |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/transactions/deposit | Deposit |
| POST | /api/transactions/withdraw | Withdraw |
| POST | /api/transactions/transfer | Transfer |
| GET | /api/transactions/history | Transaction history |
- id
- fullName
- email
- password
- role
- createdAt
- id
- accountNumber
- accountType
- balance
- status
- userId
- id
- amount
- type
- senderAccount
- receiverAccount
- timestamp
The project implements:
- JWT Authentication
- Spring Security
- Password Hashing (BCrypt)
- Role-Based Authorization
- Stateless Authentication
- Protected API Endpoints
git clone https://github.com/yourusername/banking-management-system.gitcd banking-management-systemUpdate:
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=updatemvn clean installmvn spring-boot:runApplication starts on:
http://localhost:8080
Run unit tests:
mvn testAPI testing can be performed using:
- Postman
- Swagger UI
- 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
Add screenshots here once the frontend is completed.
/screenshots
├── login.png
├── dashboard.png
├── accounts.png
└── transactions.png
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
Contributions are welcome.
- Fork the repository
- Create a new feature branch
git checkout -b feature/new-feature- Commit your changes
git commit -m "Add new feature"- Push to your branch
git push origin feature/new-feature- Open a Pull Request
This project is licensed under the MIT License.
Pre2jasi
Backend Developer
- Java
- Spring Boot
- REST APIs
- MySQL
- Spring Security
- Hibernate
- Maven
GitHub: https://github.com/pre2jasi
LinkedIn: https://linkedin.com/in/nwigboy
If you found this project useful, consider giving it a ⭐ Star on GitHub.