Welcome to the Bank Application repository! This is a full-fledged backend banking application built using the MERN stack (MongoDB, Express.js, Node.js). Currently, the focus is on the backend, which handles user authentication, account management, and transaction services. The frontend has also been initiated and includes registration, login, and dashboard functionality.
- Bank Application
- Table of Contents
- Project Overview
- Key Features (Backend Only):
- Frontend:
- Features
- Technologies Used
- Backend:
- Frontend:
- Development:
- Installation Instructions
- Install Backend Dependencies:
- Install Frontend Dependencies:
- Environment Configuration:
- Running the Backend
- Running the Frontend
- Contribution:
- Contributors:
- License
The Bank Application is designed to handle core banking functionalities such as user registration, login, account management, and fund transfers. The backend API has been built using Node.js, Express.js, and MongoDB, and is designed to be scalable and secure. The frontend interacts with the backend to provide a user-friendly interface for users.
- User Registration & Authentication: Users can register, log in, and manage their accounts using JWT for secure authentication.
- Account Management: Users can create, view, and delete bank accounts.
- Transaction Management: Users can view their transaction history and make fund transfers.
- Admin Panel: Admins can view, manage user accounts, and oversee transactions.
The frontend of the application has been initiated and includes the following features:
- Registration & Login: User registration and login functionality have been implemented with proper design.
- User Authorization: Protected routes have been implemented to ensure secure access to user-specific pages.
- Dashboard: A dashboard page has been built to provide users with an overview of their accounts and transactions (styling is pending).
- Vite: A fast and optimized build tool for modern web projects.
- React.js: JavaScript library for building interactive user interfaces.
- Axios: For making HTTP requests to the backend API.
The frontend is hosted at: Frontend Repository
- Secure Authentication: JWT tokens are used for secure user authentication.
- Account Creation: Users can create new bank accounts.
- Transaction History: Users can view the history of transactions associated with their accounts.
- Fund Transfers: Users can transfer funds between their accounts.
- Admin Management: Admins have the ability to manage users and view transaction records.
The backend of the application is built using the following technologies:
- Node.js: JavaScript runtime for building scalable server-side applications.
- Express.js: Web application framework for Node.js, simplifying API development.
- MongoDB: NoSQL database for storing user and transaction data.
- Mongoose: ODM (Object Data Modeling) library for MongoDB and Node.js.
- JWT (JSON Web Tokens): Secure token-based authentication system.
- bcryptjs: Password hashing library to ensure secure password storage.
- dotenv: To manage environment variables for sensitive information.
- Cors: Middleware for enabling cross-origin requests between the client and server.
- cloudinary: For managing and storing images, if applicable.
- connect-mongo: For session storage using MongoDB.
- cookie-parser: To parse cookies for session management.
- express-session: For handling user sessions.
- multer: Middleware for handling file uploads, if needed.
- nodemailer: For sending email notifications (e.g., for account registration or transactions).
- hunter.io: For verifying and managing email addresses.
- nodemon: For auto-reloading the server during development.
To get the backend and frontend of the application up and running locally, follow these steps:
Navigate to the backend directory and install the required dependencies:
cd backend
npm install
Navigate to the frontend directory and install the required dependencies:
cd frontend
npm install
Create a .env
file in the backend directory and add the following environment variables:
PORT: Port where the server will run (default: 8000).
MONGO_URI: MongoDB connection string.
ACCESS_TOKEN_SECRET: Secret for access token generation.
ACCESS_TOKEN_EXPIRY: Expiry time for the access token (default: 1d).
REFRESH_TOKEN_SECRET: Secret for refresh token generation.
REFRESH_TOKEN_EXPIRY: Expiry time for the refresh token (default: 10d).
CLOUDINARY_CLOUD_NAME: Cloud name for Cloudinary image storage.
CLOUDINARY_API_KEY: API key for Cloudinary.
CLOUDINARY_API_SECRET: API secret for Cloudinary.
SESSION_SECRET_KEY: Secret key for session management.
NODEMAILER_GMAIL_USERNAME: Gmail username for Nodemailer.
NODEMAILER_GMAIL_PASSWORD: Gmail password for Nodemailer.
HUNTER_API_KEY: API Key for Hunter to verify emails.
Once you have installed the dependencies and set up the configuration, you can run the backend by following these steps:
- Navigate to the backend directory.
- Run the server with:
npm start
# OR
npx nodemon
- The backend API will be accessible at
http://localhost:8000
.
Once you have installed the dependencies, you can run the frontend by following these steps:
- Navigate to the frontend directory.
- Start the development server:
npm run dev
- The frontend will be accessible at the URL provided by Vite (e.g.,
http://localhost:5173
).
We welcome contributions to improve this project! To contribute, follow these steps:
- Fork the repository by clicking the Fork button at the top-right corner of this page.
- Clone your fork to your local machine:
git clone https://github.com/Alphasf9/BANK.git
- Create a new branch for your feature or bugfix:
git checkout -b feature-branch
- Make your changes.
- Commit your changes:
git commit -m 'Add new feature or fix bug'
- Push your changes to your forked repository:
git push origin feature-branch
- Open a pull request on GitHub, and describe the changes you have made.
- MOHD HASEEB ALI (Alphasf9): Full stack developer (GitHub Profile)
- Aryan Kumar (Aryan-Kumar-7): Full stack developer (GitHub Profile)
- Shubham Maurya (shubhammauryask): App developer/Backend Developer (GitHub Profile)
- Krishnakant Yadav (Kk-0010): Full stack developer (GitHub Profile)
This project is licensed under the MIT License - see the LICENSE file for details.