MiniBank is a Spring Boot REST API that simulates core digital banking operations: secure user authentication, account management, money transfers, transaction history, fraud flagging, and admin oversight.
- JWT-based authentication with Spring Security
- Role-based access control (
CUSTOMER,ADMIN) - Account creation and balance tracking
- Account statuses:
ACTIVE,FROZEN,CLOSED - Internal transfers with transactional consistency (
@Transactional) - Transaction history filtering (date, amount, type) with pagination/sorting
- Fraud/risk flagging for suspicious transfers (high-value/frequent activity)
- Admin APIs for dashboard metrics, account freezing, and flagged transaction review
- Audit logging for sensitive admin actions
- Java 17
- Spring Boot 4
- Spring Web MVC
- Spring Data JPA
- Spring Security
- JWT (
jjwt) - MySQL 8
- Liquibase (migrations + seed data)
- OpenAPI/Swagger (
springdoc) - JUnit 5 + Mockito
- Docker Compose (local MySQL)
- dotenv support for local environment secrets
usersrolesuser_rolesaccountstransactionsfraud_flagsaudit_logs
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI JSON:
http://localhost:8080/api-docs
- Configuration is environment-driven for sensitive values (JWT/admin secrets)
- Built as a practical backend foundation for digital banking workflows and future production-style enhancements