- Introduction
- Technologies Used
- Features
- API Documentation
- Security Measures
- Database Management
- Project Management Methodology
- Deployment
- Challenges Faced
- Contributing
- License
This project is a full-stack retail net banking web application developed to provide a user-friendly and secure platform for managing banking operations. It includes three distinct roles: Customer, Employee, and Manager, each with specific functionalities tailored to their needs. Implemented concepts I learnt, crafted frontend with React, React Router, Redux, HTML5, CSS, Bootstrap and JavaScript. Backend has RESTful architecture using Spring Boot, Java, J2EE, Spring Data JPA, and Spring Security for JWT authentication and role-based authorization. MySQL as database, managed using Hibernate ORM with 'code-first' approach. Maintained version control via GitHub & conducted API testing using tools like Postman and Swagger. Followed agile software development methodology for iterative development & quick adaptation. Deployed the application on AWS & has robust features, including email notifications, KYC verification, and OTP-verified transactions. Features were discarded from initial Software Requirements Specification (SRS) due to project time constraints. Overall, project is a blend of technical expertise & strategic planning. Video Explanation
- User authentication with
token
- Role-based
using Spring Security
- KYC
of Customer mandatory for carrying any type of transactions in account and
and
of account
-verified transactions transactions
Notifications for account opening, any type of transaction (deposit / withdrawal / send), and KYC status update
Generated using Swagger : API Documentation
- Implemented JWT authentication for secure user login.
- Utilized Spring Security for role-based authorization.
- Followed best practices for secure data handling like storage of password by one way encrytion using org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
- Time based (valid for 2 minutes) otp generation and verification at Server Side implemented by server side caching and multithreading
- Employee Management by Manager
- Auto-generated account numbers during account creation and password during forgot password service using custom strategy at server side
- JWT token expires after 20 minutes of Login and User need to relogin for a new session
- MySQL database managed using Hibernate ORM with a 'code-first' approach.
- Ensured efficient data storage and retrieval for optimized performance.
- Used Triggers at Database level as per requirements due to normalized database to maintain data consistency and reduce data redundancy.
- EER diagram
- SQL trigger and offers setup
- Followed agile software development methodology for iterative development and quick adaptation.
- Managed project constraints effectively to deliver value incrementally that can be seen as in commits of this repository.
- Initially started with use case diagram and ER diagram using, SRS and database schema design (Initial design available in daywise progress directory). However, after multiple iterations, reduced the scope and put it into future scope. Use case diagram
- Before starting with backend and frontend development, had discussion with team over UX and UI design after studying few bank websites. So for better understanding and visualisation for refernce, we had designed templates using Figma. After multiple iterations, final concept was reduced to UI/UX design
- The application was deployed on Amazon Web Services (AWS) for accessibility and scalability using Docker containers.
- Docker commands for containerization and deployment on AWS EC2
- Watch AWS Deployed App Video
- Time constraints leading to feature adjustments (reduced).
- Addressed technical challenges related to parallel development, integration deployment and performace optimization.
Contributions are welcome! Feel free to fork this repository and submit pull requests to contribute to the project.
This project is licensed under the MIT License.