Welcome to the PayTM Wallet project, a comprehensive digital wallet solution inspired by PayTM. This application allows users to manage their finances efficiently with features such as user authentication, account management, balance display, and more. The project includes both backend and frontend components, making it a full-stack application built with modern web technologies.
- Overview
- Features
- Technology Stack
- Project Evolution
- Setup and Installation
- Contribution Guidelines
- Live Demo
- PR Summaries
PayTM Wallet is a digital wallet application that provides users with a secure and efficient way to manage their finances. This application allows users to create an account, authenticate, view account balances, transfer funds, and manage their profiles.
The project consists of:
- A backend built with Express.js and MongoDB for handling server-side logic, API endpoints, and database operations.
- A frontend developed with React and Tailwind CSS, providing a responsive and intuitive user interface.
- User Authentication: Secure signup and login using JWT tokens.
- Account Management: View balances, transfer funds, and manage personal information.
- Real-time Updates: Reflects changes such as balance updates and profile edits immediately.
- Responsive UI: Built with Tailwind CSS for a mobile-first, responsive design.
- Reusable Components: Modular and reusable UI components for better code maintenance.
- Language: JavaScript (Node.js)
- Framework: Express.js
- Database: MongoDB, managed via Mongoose ODM
- Libraries:
- Zod: Input validation library
- Dotenv: Environment variable management
- Tools:
- Docker: Containerization of the backend application
- Language: JavaScript
- Framework: React
- CSS Framework: Tailwind CSS
- Build Tool: Vite
- Libraries:
- Axios: For API requests
- Radix UI: For enhanced UI components
The project began with basic user management and account management features, allowing users to create accounts, sign in, and view account details. The backend was initially set up to handle user authentication and basic CRUD operations for account management.
As the project progressed, additional features were added:
- User Interface Enhancements: Improved user experience with dynamic navigation, context-based user interactions, and responsive design.
- Error Handling and Security: Refined backend and frontend error handling, improved security measures for authentication, and introduced environment variable management.
The final phase focused on:
- Real-time Updates: Integration of components like dynamic navigation bars based on user authentication status and real-time balance display.
- Polishing and Deployment: Final code refactoring, polishing of UI components, and preparation for deployment using Docker.
To set up the application locally, follow these steps:
- Node.js and npm installed
- Docker (for containerized deployment)
- Clone the repository:
git clone https://github.com/HashirAKB/Paytm-Wallet.git
- Navigate to the backend directory:
cd Paytm-Wallet/backend
- Install dependencies:
npm install
- Configure environment variables:
- Create a
.env
file in thebackend/
directory based on the.env.example
file provided.
- Create a
- Start the server:
node index.js
- Navigate to the frontend directory:
cd Paytm-Wallet/frontend
- Install dependencies:
npm install
- Start the development server:
npm run dev
For a Dockerized deployment:
- Build the Docker image:
docker build -t paytm-wallet .
- Run the Docker container:
docker run -p 3000:3000 paytm-wallet
We welcome contributions from the community! To contribute, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature
). - Commit your changes (
git commit -m 'Add your feature'
). - Push to the branch (
git push origin feature/your-feature
). - Create a pull request.
Ensure your code adheres to the project's coding conventions and passes all linting checks. Detailed contribution guidelines are available in the CONTRIBUTING.md
file.
- Frontend Live Version - Hosted on Render
- Backend Live Version - Hosted on Render
Here are the highlights from the pull requests (PRs) that shaped this project:
- Summary: Simplified the structure and improved loading times by optimizing the HTML file.
- Summary: Added direct links to live backend and frontend applications in the README for improved accessibility.
- Summary: Integrated Axios library for improved API interactions and error handling.
- Summary: Added an authentication context, route protection, and dynamic navigation elements to enhance security and user experience.
- Summary: Introduced new UI components for alerts, separators, skeletons, and a user profile management system.
- Summary: Enhanced authentication processes with refined error handling and state management.
- Summary: Added components for displaying account balance and user information, along with search functionality.
- Summary: Improved user management with optional updates and secured routes for retrieving current user details.
- Summary: Developed sign-in functionality with improved state management and user feedback mechanisms.
- Summary: Enhanced the user interface and interactions for account creation and transaction functionalities.
- Summary: Added core authentication components and navigation, streamlining the user onboarding process.
- Summary: Completed backend development with routes for account management and user authentication.
- Summary: Initial implementation of user management API with JWT authentication and structured routing.
If you have any questions or suggestions, please feel free to reach out to us via the repository's Issues page.
HashirAKB - twitter Project Link: https://github.com/HashirAKB/Medium