Online Banking Web Application
Overview:
This is a full-stack secure banking application where users can:
-
Sign up and log in with encrypted credentials
-
View their account balance in real-time
-
Make e-transfers to other users via email
-
Deposit funds
-
View and update their profile (excluding card number)
-
Log out securely
The application emphasizes data security, component-based front-end architecture, and modular backend design, all deployed and hosted on Microsoft Azure.
Tech Stack
Frontend (React.js)
-
-
Built with React (function components + hooks)
-
React Router for SPA routing (
/login
,/signup
,/dashboard
,/account
) -
node-forge
used to encrypt sensitive user data before sending to the server -
Local state with
useState
anduseEffect
for dynamic data fetching and updates -
Responsive design with modular CSS (
Navigator.css
,Dashboard.css
, etc.) -
Auth state persisted with
localStorage
-
Backend (Node.js + Express)
-
-
RESTful API built with Express.js
-
Routes for:
-
POST /signup
andPOST /login
-
GET /balance/:id
,POST /deposit/:id
,POST /etransfer/:id
-
GET /getinfo/:id
,PUT /saveinfo/:id
-
-
JWT Authentication middleware to protect sensitive routes
-
RSA Encryption/Decryption of all sensitive fields using
crypto
and Node’sfs
module -
bcrypt for password hashing
-
Mongoose used to model user data and persist to MongoDB
-
Database
-
-
MongoDB Atlas cloud-hosted database
-
Stores user records securely with hashed passwords and account balances
-
All inter-user operations like transfers are atomic and consistent
-
Security Features
-
-
Passwords are:
-
Encrypted with RSA on the client
-
Decrypted and hashed (bcrypt) on the server before saving
-
-
Encrypted fields include:
-
cardnum
-
password
-
firstName
,lastName
,email
, andphone
during profile updates
-
-
JWT token is issued on login and stored in
localStorage
-
All protected routes are guarded by a JWT middleware
-
Key Features
Feature | Description |
---|---|
Signup/Login | Credentials are RSA-encrypted and verified server-side |
Account Balance | Displayed dynamically and updated in real-time |
Deposits | Users can add funds to their account securely |
E-Transfers | Users can send money to other users by email |
User Profile | View and edit all fields except cardnum |
Token Auth | JWT token used to protect routes and persist sessions |
Error Handling | Graceful error responses for login, signup, transfers, etc. |
Responsive UI | Styled consistently with reusable button and form styles |
Deployment
Microsoft Azure
The project is deployed using Microsoft Azure, taking advantage of:
-
- Azure App Service for hosting the Node.js server
-
Azure Storage or Blob for React static assets
-
MongoDB Atlas for cloud-hosted database
-
Environment variables (e.g.,
JWT_SECRET
) managed securely via Azure’s App Settings -
Public key securely served from backend for frontend encryption
Challenges Solved
-
Encrypting long or special-character strings (e.g., email, names) using RSA and properly handling encoding
-
Avoiding double-parsing of public keys with
node-forge
-
Dealing with JWT token expiration and secure route access
-
Implementing read-only fields (
cardnum
) while maintaining editable UI