This is a PayTM clone, a full-stack web application that simulates basic digital payment functionality where users can create accounts, maintain balances, and transfer money to other users.
Backend Technologies:
- Node.js with Express.js framework for the server
- MongoDB with Mongoose ODM for database
- JWT (JSON Web Tokens) for authentication
- Zod for input validation
- CORS for handling cross-origin requests
Frontend Technologies:
- React.js (using Vite as build tool)
- React Router for navigation
- Axios for API calls
- TailwindCSS for styling
- React Hooks (useState, useEffect)
-
User Authentication:
- Sign up with email, password, first name, and last name
- Sign in with email and password
- JWT-based authentication system
-
Account Management:
- Each user gets a random initial balance (between 1-10000)
- Users can view their current balance
- Profile information can be updated
-
Money Transfer:
- Users can search for other users
- Transfer money to other users
- Real-time balance updates
- Transaction security using MongoDB sessions
-
User Interface:
- Clean, modern UI using TailwindCSS
- Responsive design
- User search functionality
- Dashboard with balance display
- User-friendly money transfer interface
paytm/
├── backend/ # Backend server code
│ ├── routes/ # API routes
│ ├── middleware.js # Authentication middleware
│ ├── db.js # Database configuration
│ └── config.js # JWT configuration
│
└── frontend/ # React frontend
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Main application pages
│ └── App.jsx # Main application component
└── public/ # Static assets
-
Security:
- Password validation
- JWT-based authentication
- Protected routes using middleware
-
Database Design:
- User schema with validation
- Account schema for balance management
- Relationship between users and accounts
-
Transaction Management:
- Atomic transactions for money transfers
- Balance verification before transfers
- Error handling for insufficient funds
This project serves as a good example of a modern full-stack JavaScript application with practical features like user authentication, real-time updates, and secure money transfers, making it a simplified but functional digital payment system similar to PayTM.