Banking app is a full-stack digital banking application designed to model real-world banking workflows such as user onboarding, account management, fund transfers, and transaction handling.
The project focuses on understanding how a React-based frontend interacts with a Spring Boot backend to deliver secure, consistent, and scalable banking features. While the frontend explores state management using React and Redux, the backend drives the core business logic, data integrity, and authorization rules.
This application is built with a strong emphasis on backend clarity, service-layer design, and real-world data flows, rather than just basic CRUD operations.
- User registration and login
- Role-based access control (User / Admin)
- Secure credential handling
- Backend-driven authorization checks
- View and update user profile details
- Account ownership mapping
- User-level access restrictions
- Support for multiple accounts per user
- Account lifecycle management
- Balance tracking and consistency
- Secure fund transfers between accounts
- Backend validation to prevent inconsistent states
- Transaction history tracking
- Atomic operations at service level
- User file uploads
- Admin-level access to uploaded files
- Controlled access and download permissions
- User account removal
- Access revocation while retaining historical records
- File inspection and moderation
- ✅ User registers and logs in
- 🏦 User creates and manages bank accounts
- 💰 Funds are deposited into accounts
- 🔁 Transfers are initiated between accounts
- 📊 Transactions are validated and persisted
- 🧾 History and balances are updated consistently
| Layer | Technology |
|---|---|
| Backend | Java, Spring Boot |
| Frontend | React, Redux |
| Database | postgres |
| Security | Spring Security |
| Build Tools | Maven, npm |
| Optional Infra | Docker, Docker Compose |
- Backend-driven business logic
- Clear separation between controllers, services, and persistence
- Consistent transaction handling
- Role-aware API access
- Scalable architecture suitable for real banking use cases
- Designed to be easily extendable
- Java JDK (17 recommended)
- Maven
- Node.js and npm
- Postgres (for non-Docker setup)
cd backend
./mvnw spring-boot:run