myCash is a web-based Mobile Financial Service (MFS) platform built using the MERN stack. It functions similarly to platforms like bKash or Nagad. The system has three roles: User, Agent and Admin. Key features include user registration, secure login, PIN protected transaction such as money transfer, cash-out, cash-in, balance inquiry, user management, and transaction history.
- User and Agent registration with 5-digit PIN (hashed using bcrypt.js), unique phone number, email and admin approval.
- Secure login via Mobile Number/Email and PIN using JWT authentication.
- New users receive a 40 Taka bonus; new agents receive a 10,000 Taka bonus upon admin approval.
- Users can perform all transaction services using an active phone number or email of a registered user or agent, along with a valid transaction amount.
- Users can send money to other users with a minimum transaction of 50 Taka. A fee of 5 Taka applies to transactions over 100 Taka.
- Users can cash out via agents, with a 1.5% fee deducted from the user balance and added to agent balance.
- Agents can handle cash-in and cash-out requests, updating both user and agent balances accordingly.
- Users can request cash-in via agents, with no fee applied.
- All users can check their balance at any time.
- Users can view the last 10 transactions, while agents can view the last 20 transactions.
- Admins can manage users and agents, activate or block accounts, and monitor all system transactions.
- Frontend: HTML, CSS, JavaScript, React, Tailwind CSS
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens),
bcrypt.js
for PIN hashing
- Figuring out how to use MongoDB for secure user authentication was a key challenge.
- Connecting the React frontend with the Node.js backend required careful attention to detail, including handling API requests, implementing proper logic and managing state.
- The website’s design and technology were updated several times to improve the project.
- It took a lot of effort to find and apply effective design ideas.
- Picking the right tools and libraries to work with React was a detailed process.
- Ensuring the website worked well on different devices required careful testing and adjustments.
- Email: admin@gmail.com
- Phone: 01800000000
- Password: 12345
- Email: user@gmail.com
- Phone: 01777777777
- Password: 12345
- Node.js and npm installed
- MongoDB installed or access to MongoDB Atlas for cloud-based database
- A modern web browser for the client
-
Clone the repositories:
git clone https://github.com/noushinpervez/myCash-Client.git git clone https://github.com/noushinpervez/myCash-Server.git
-
Navigate to the server project directory and install dependencies:
cd myCash-Server npm install
-
Navigate to the client project directory and install dependencies:
cd myCash-Client npm install
-
Set up environment variables:
- Create a
.env
file in themyCash-Server
directory and add necessary configuration variables:DB_USER= DB_PASS= JWT_SECRET=
- Replace each variable with your actual configuration keys and values without quotations.
- Create a
-
Run the backend server:
node index.js
-
Run the frontend client:
npm run dev
-
Access the application:
- Frontend should be accessible at
http://localhost:5173
. - Backend API runs on
http://localhost:5000
.
- Frontend should be accessible at
Follow these instructions to set up and locally run the client and server of myCash to explore its features and functionalities.