A comprehensive full-stack web application for managing banking operations. This project includes user authentication, account management, transaction processing, and loan management.
MyBankProject/
├── backend/ # Node.js/Express API
│ ├── src/
│ │ ├── config/ # Database and auth configuration
│ │ ├── controllers/ # Request handlers
│ │ ├── models/ # Database models
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Custom middleware
│ │ ├── utils/ # Utility functions
│ │ └── server.js # Main server file
│ ├── package.json
│ └── .env.example
├── frontend/ # React web application
│ ├── src/
│ │ ├── components/ # Reusable React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API service layer
│ │ ├── context/ # React context (Auth)
│ │ ├── styles/ # CSS stylesheets
│ │ ├── App.js
│ │ └── index.js
│ ├── public/
│ │ └── index.html
│ └── package.json
└── database/ # Database schema and setup
├── schema.sql # PostgreSQL schema
├── seed.sql # Sample data
└── README.md
- User registration and login
- JWT-based authentication
- Role-based access control (Customer, Admin, Staff)
- Secure password hashing with bcrypt
- Create multiple accounts (Savings, Checking, Loan)
- View account details and balance
- Deposit and withdraw funds
- Real-time balance updates
- Deposit funds
- Withdraw funds
- Transfer money between accounts
- Transaction history with filtering
- Transaction details view
- Apply for loans
- View loan applications and status
- Calculate monthly payments
- Admin approval/rejection of loans
- Track disbursed and paid amounts
- View profile information
- Update personal details
- Secure authentication
- Runtime: Node.js
- Framework: Express.js
- Database: PostgreSQL
- Authentication: JWT + bcryptjs
- Security: Helmet, CORS
- Framework: React 18
- Routing: React Router v6
- HTTP Client: Axios
- Icons: React Icons
- CSS: Custom CSS with responsive design
- DBMS: PostgreSQL 12+
- ORM: Raw SQL queries with pg library
- Node.js (v14+)
- npm or yarn
- PostgreSQL (v12+)
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
cp .env.example .env- Update
.envwith your configuration:
NODE_ENV=development
PORT=5000
DATABASE_URL=postgresql://user:password@localhost:5432/banking_system
JWT_SECRET=your_secret_key
BCRYPT_ROUNDS=10
- Start the server:
npm run devThe backend will run on http://localhost:5000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm startThe frontend will run on http://localhost:3000
- Create the database:
createdb banking_system- Apply the schema:
psql -U postgres -d banking_system -f database/schema.sql- (Optional) Load sample data:
psql -U postgres -d banking_system -f database/seed.sqlPOST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/profile- Get user profilePUT /api/auth/profile- Update user profile
POST /api/accounts- Create accountGET /api/accounts- Get all accountsGET /api/accounts/:accountId- Get account detailsPOST /api/accounts/:accountId/deposit- Deposit fundsPOST /api/accounts/:accountId/withdraw- Withdraw funds
POST /api/transactions/transfer- Transfer fundsGET /api/transactions/:accountId/history- Get transaction historyGET /api/transactions/:transactionId/details- Get transaction details
POST /api/loans/apply- Apply for loanGET /api/loans- Get loan historyGET /api/loans/:loanId- Get loan detailsPUT /api/loans/:loanId/approve- Approve loan (Admin)PUT /api/loans/:loanId/reject- Reject loan (Admin)
- Email:
admin@bank.com - Password:
password123
- Email:
john@example.com - Password:
password123
- Password Security: Passwords are hashed using bcryptjs
- JWT Authentication: Token-based authentication for API
- Input Validation: Server-side validation for all inputs
- CORS: Configured for frontend origin
- Helmet: Security headers with Helmet.js
- SQL Injection Prevention: Using parameterized queries
- Rate Limiting: Ready for implementation
NODE_ENV=development
PORT=5000
DATABASE_URL=postgresql://user:password@localhost:5432/banking_system
JWT_SECRET=your_jwt_secret_key_here
JWT_EXPIRE=7d
BCRYPT_ROUNDS=10
- Stores user information and credentials
- Roles: customer, admin, staff
- User bank accounts
- Account types: savings, checking, loan
- Tracks balance and status
- Records all financial transactions
- Types: deposit, withdrawal, transfer
- Links to source and destination accounts
- Loan applications and approvals
- Tracks loan amount, interest rate, tenure
- Stores disbursed and paid amounts
All API responses follow a consistent format:
- Success:
{ data: {...} } - Error:
{ error: "error message" }
- Email notifications
- SMS OTP verification
- Mobile app (React Native/Flutter)
- Advanced analytics and reports
- Bill payment integration
- Investment products
- Credit scoring
- Admin dashboard
- Audit logging
- Multi-currency support
Run tests:
npm test- Build the project:
npm run build - Deploy the
buildfolder
- Create a
.env.productionfile - Deploy to your hosting service
- Create a feature branch
- Make your changes
- Submit a pull request
This project is part of a college final year project for Bachelor in Information Technology (BIT).
For issues or questions, please refer to the project documentation or contact the development team.
Project Submission
- Institution: Lincoln University College
- Faculty: Computer Science and Multimedia
- Student: Bishal TM
- Semester: BIT 7th Semester
- University ID: LC0003001650
- Date: December 14, 2025