π° Secure Finance Management System (v1.0)
A production-grade, multi-user finance management system built in Java (CLI). The system features secure authentication, role-based access control, concurrent transaction handling, and PostgreSQL cloud persistence.
β¨ Features
π Secure Authentication SHA-256 password hashing with unique per-user salt Login using Email or 13-digit CNIC Account lockout after 5 failed login attempts Audit logging for authentication events
π₯ Role-Based Access Control CUSTOMER role ADMIN role
π¦ Account Management Apply for: Savings Account Current Account Fixed Deposit Account Admin approval workflow for account creation Support for multiple accounts per user
πΈ Transaction Engine Deposit funds Transfer funds between accounts Daily transfer limits Transaction history tracking Deadlock-free concurrent transactions using ReentrantLock
π Loan Processing Loan application system Loan approval/rejection by admin EMI calculation support Loan status tracking (PENDING, APPROVED, REJECTED)
π‘οΈ Audit & Logging Security event logging Admin action logging Database-backed audit trail
π¦ Running the Application Prerequisites Java 11 or higher installed Adoptium JDK Download Internet connection (required for Neon cloud database access)
Note: No local database setup is required. The application connects directly to a shared Neon cloud database.
π¨βπΌ Admin Account
An administrator account is pre-configured in the database.
Email: admin@bank.com Password: (configured manually during deployment)
The admin can:
Approve/reject loan applications Approve/reject account applications Search accounts by CNIC or account number Monitor audit logs π§βπ» How to Use Customer Workflow
1οΈβ£ Register
Provide:
Full name Email 13-digit CNIC Password (minimum 4 characters)
2οΈβ£ Login
Login using:
Email + Password OR CNIC + Password
3οΈβ£ Apply for an Account
Choose one:
Savings Account Current Account Fixed Deposit Account
Minimum initial deposit: $100
4οΈβ£ Wait for Admin Approval
Your account application remains in PENDING state until approved by the admin.
5οΈβ£ Access Banking Features
After approval, users can:
Deposit money Transfer funds View balance View transaction history Apply for loans Switch between accounts Create additional accounts Admin Workflow Admin Dashboard Features View pending loan applications Approve/reject loans View pending account applications Approve/reject account requests Search accounts by: CNIC Account number Review audit logs
All admin actions are securely logged in the database.
ποΈ Database Schema (Simplified) users
Stores:
Email CNIC Password hash Salt Role Lock status accounts
Stores:
Account number Owner email Account type Balance Status CNIC account_applications
Stores pending account requests.
loans
Stores:
Loan ID Applicant email Amount Interest rate Loan duration Status transactions
Stores:
Sender account Receiver account Amount Timestamp audit_logs
Stores:
User Action Timestamp Additional details
π Project Structure src/ βββ Module1/ # User, AuthService βββ Module2/ # Account System & AccountService βββ Module3/ # Transaction Engine & Repository βββ Module04/ # Loan System βββ module05/ # Password Utilities & Audit Logging βββ moduledata/ # Database Connection (Neon) βββ Main.java
π Future Enhancements (v2) Spring Boot Web Interface Email Notifications Two-Factor Authentication (2FA) Monthly Interest Batch Jobs REST API Support Docker Deployment
π₯ Group Members Esha Rashid β 02-134252-060 Syed Muhammad Anser β 02-134252-010 Rehan Ilyas β 02-134252-025
π License Academic project developed for course submission purposes only.