A secure, full-featured banking application built with Spring Boot. Follows layered MVC architecture with role-based access control for staff and administrators, email notifications for key transactions, and MySQL-backed persistence.
- Account Management — create, update, and delete customer accounts
- Transactions — deposits, withdrawals, balance inquiries
- Role-Based Access — separate staff and admin privilege levels
- Email Notifications — triggered on login and fund transfers
- Report Generation — printable transaction and account reports
- Network Database — single shared MySQL instance across multiple system nodes
| Layer | Technology |
|---|---|
| Frontend | HTML5, Bootstrap |
| Backend | Java, Spring Boot |
| Database | MySQL |
| Architecture | MVC + Layered Architecture |
| Server | Embedded Apache Tomcat |
- Java 8+
- Maven
- MySQL Workbench or CLI
- IDE with Spring Boot support (IntelliJ IDEA / Eclipse / NetBeans)
- Open MySQL Workbench
- Create a database named
database - Import the SQL file: Server → Data Import → Import from Self-Contained File → select the
.sqlfile in the repo → Execute
Open src/main/resources/application.properties and set:
# Database
spring.datasource.username=YOUR_DB_USERNAME
spring.datasource.password=YOUR_DB_PASSWORD
# Email notifications
spring.mail.username=YOUR_EMAIL
spring.mail.password=YOUR_EMAIL_PASSWORD- Clone the repo and open in your IDE
- Import as a Maven project (dependencies download automatically)
- Run as Spring Boot Application
- Open
http://localhost:8080
| Username | Password |
|---|---|
admin |
admin |
This project follows a Layered (n-tier) Architecture:
Controller (MVC) → Service Layer → Repository (JPA) → MySQL
↓
Security Layer (role-based auth)
- Controller — handles HTTP requests and routes to views
- Service — business logic (transaction validation, notification dispatch)
- Repository — Spring Data JPA for database operations
- Security — Spring Security with role separation (STAFF / ADMIN)
MIT License — see LICENSE for details.