This project aim is to address a real-time issue that affects all customers with existing bank accounts, particularly those who have savings and current accounts in major public and private banks. In today's world, it is common for individuals to hold at least one or two bank accounts, and most of these accounts require customers to maintain a Monthly Average Minimum Balance (MAB).Failure to maintain the MAB results in customers being fined, albeit by small amounts.From an individual perspective, these fines may seem insignificant, but from the bank's overall perspective, they accumulate into a substantial amount.
Documentation :
According to 2020 statistics, both public and private sector banks in India collectively accrued more than 35,530 crores in penalties from customers due to non-compliance with MAB requirements.
Documentation :
This project stands out from existing UPI apps as it allows customers to link their bank accounts to my application. Once linked, customers can transfer money to other accounts within the application. In every transaction, I check the customers monthly minimum balance, and if the sent amount exceeds this minimum balance, It notify the user before proceeding with the transaction. This ensures that customers maintain their monthly minimum balance properly.
Visit Registration Page:
Enter Details:
Submit Registration:
Validation:
Successful Registration:
users
table.Failed Registration:
Visit Login Page:
Enter Phone Number and Password:
Validation:
users
table.Successful Login:
Failed Login:
User Profile Home:
Initiate Bank Account Linking:
Enter Bank Account Details:
Accept Terms and Conditions:
Submit Request:
Validation:
Check Bank Details Table:
bank_details
table.Retrieve Bank Account Details:
bank_details
table, the system fetches the bank account details (available balance, phone number, minimum balance, account type, etc.) from the matched record.Create User Account Entry:
accounts
table, associating it with the user's profile.Confirmation:
User Header Navigation:
Initiate Money Transfer:
Select Sender Account:
Enter Receiver Account Details:
Validation:
Minimum Balance Check:
Proceed with Transaction:
Transaction Confirmation:
transactions
table, reflecting the transfer.Receiver Account Update:
Confirmation:
Transaction History Update:
Transaction Success:
Transaction Listing:
Initiate Filtering:
Select Bank Account Number:
Filter by Account Number:
Filter Applied:
Initiate Search:
Enter Search Query:
Search and Display:
Results Display:
Clear Search:
MAB Explanation:
Dropdown Selection:
Select Account:
Automatic MAB Calculation:
Display MAB Data:
MAB Calculation:
Daily Closing Balances:
Calculation Trigger:
Average Calculation:
MAB Display:
Link to Milestones Issue :
We have integrated our project with SonarCloud to perform code quality analysis and static code analysis. You can find the overall analysis report on the SonarCloud platform:
Link to SonarCloud Analysis :
This table is used to store information about customers.
Column Name | Data Type | Constraints | Description |
---|---|---|---|
customer_id |
BIGINT | AUTO_INCREMENT, PRIMARY KEY | Unique identifier for each customer. |
first_name |
VARCHAR(30) | NOT NULL | First name of the customer. |
last_name |
VARCHAR(30) | NOT NULL | Last name of the customer. |
email |
VARCHAR(50) | NOT NULL | Email address of the customer. |
phone_number |
BIGINT | NOT NULL, UNIQUE | Phone number of the customer. |
password |
VARCHAR(30) | NOT NULL | Password for customer authentication. |
is_active |
BOOLEAN | NOT NULL, DEFAULT TRUE | Indicates whether the customer is active. |
This table is used to store information about bank accounts.
Column Name | Data Type | Constraints | Description |
---|---|---|---|
acc_id |
BIGINT | AUTO_INCREMENT, PRIMARY KEY | Unique identifier for each bank account. |
acc_no |
VARCHAR(16) | NOT NULL, UNIQUE | Bank account number. |
ifsc |
VARCHAR(11) | NOT NULL | Indian Financial System Code (IFSC). |
avl_balance |
DOUBLE | NOT NULL | Available balance in the account. |
phone_number |
BIGINT | NOT NULL | Phone number associated with the account. |
min_balance |
DOUBLE | NOT NULL | Minimum balance required for the account. |
account_type |
VARCHAR(40) | NOT NULL | Type of bank account. |
is_active |
BOOLEAN | NOT NULL, DEFAULT TRUE | Indicates whether the account is active. |
date_of_joining |
TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL | Date of joining the bank. |
month_interval |
INT | NOT NULL | Interval for monthly account maintenance. |
avg_balance |
DOUBLE | NOT NULL, DEFAULT 0 | Average balance in the account. |
customer_id |
BIGINT | Foreign key referencing the customer. | |
bank_id |
BIGINT | Foreign key referencing the bank details. |
The bank_details
table stores information about bank accounts linked to the application. Here's the table schema:
Column Name | Data Type | Description |
---|---|---|
bank_id | BIGINT | Primary key for the bank account record. |
acc_no | VARCHAR(16) | Bank account number (unique). |
ifsc | VARCHAR(11) | IFSC code of the bank branch. |
avl_balance | DOUBLE | Available balance in the account. |
phone_number | BIGINT | Phone number associated with the account. |
min_balance | DOUBLE | Minimum balance required for the account. |
account_type | VARCHAR(40) | Type of bank account (e.g., savings, current). |
is_active | BOOLEAN | Indicates whether the account is active or not. |
month_interval | INT | Time interval for any specific operations. |
This table is crucial for managing and tracking bank account details within the application.
This table is used to store information about financial transactions.
Column Name | Data Type | Constraints | Description |
---|---|---|---|
trans_id |
BIGINT | AUTO_INCREMENT, PRIMARY KEY | Unique identifier for each transaction. |
acc_holder |
VARCHAR(16) | NOT NULL | Account holder's name. |
remittance |
VARCHAR(16) | NOT NULL | Recipient or remittance details. |
trans_status |
VARCHAR(10) | NOT NULL | Transaction status (e.g., "completed"). |
trans_amount |
DOUBLE | NOT NULL | Transaction amount. |
avl_balance |
DOUBLE | NOT NULL | Available balance after the transaction. |
paid_time |
TIMESTAMP | DEFAULT CURRENT_TIMESTAMP NOT NULL | Timestamp when the transaction was paid. |
debited_time |
TIMESTAMP | DEFAULT CURRENT_TIMESTAMP NOT NULL | Timestamp when the account was debited. |
remark |
VARCHAR(50) | NULL | Optional remark or note for the transaction. |
holder_id |
BIGINT | NOT NULL | Foreign key referencing the customer. |
remittance_id |
BIGINT | NOT NULL | Foreign key referencing the remittance details. |
The date_table
is a simple table used for tracking dates and timestamps. Below is the table schema:
Column Name | Data Type | Description |
---|---|---|
date_id | BIGINT | Primary key for date records. |
updated_date | TIMESTAMP | Timestamp of when the record was updated. |
The closing_balance
table is used to store daily closing balance records associated with bank accounts. Below is the table schema:
Column Name | Data Type | Description |
---|---|---|
closing_balance_id | BIGINT | Primary key for closing balance records. |
acc_no | VARCHAR(16) | Bank account number (linked to accounts ). |
date_id | BIGINT | Reference to the date associated with the record (linked to date_table ). |
eod_balance | DOUBLE | End-of-day (EOD) closing balance for the account. |
The backup_date_table
is a table used for tracking dates and timestamps, often used for backup purposes. Below is the table schema:
Column Name | Data Type | Description |
---|---|---|
date_id | BIGINT | Primary key for date records. |
updated_date | TIMESTAMP | Timestamp of when the record was updated. |
The backup_closing_balance
table is used to store backup records of daily closing balance information associated with bank accounts. Below is the table schema:
Column Name | Data Type | Description |
---|---|---|
closing_balance_id | BIGINT | Primary key for closing balance backup records. |
acc_no | VARCHAR(16) | Bank account number (linked to closing_balance ). |
date_id | BIGINT | Reference to the date associated with the backup record (linked to date_table ). |
eod_balance | DOUBLE | End-of-day (EOD) closing balance backup for the account. |