QuickTalk is a real-time chat application built with the MERN stack (MongoDB, Express, React, Node.js), utilizing Zustand for state management and WebRTC for peer-to-peer audio and video calls. The app also integrates Socket.io for real-time communication and Cloudinary for image storage.
- Real-time Chat: Instant messaging with support for private and group chats using Socket.io.
- Audio/Video Calls: Peer-to-peer communication with WebRTC for high-quality audio and video calls.
- State Management: Zustand is used for efficient and simple state management.
- Image Storage: Store and serve images using Cloudinary.
- Notifications: Real-time notifications for incoming messages and calls.
- Responsive Design: Fully responsive UI for seamless usage on desktop and mobile devices.
- Message Deletion: Automatically deletes messages after 24 hours.
- Frontend: React, Zustand, WebRTC
- Backend: Node.js, Express, Socket.io
- Database: MongoDB
- Storage: Cloudinary (for image uploads)
- Authentication: JWT (JSON Web Token)
-
Clone the repository:
git clone https://github.com/Anujpal05/ChatApp
-
Navigate to the project directory:
cd ChatApp
3.Install the dependencies for the backend:
```base
cd server
npm Install
```
-
Install the dependencies for the frontend:
cd client npm Install -
Set up environment variables:
- Create a .env file in the server folder with the following variables
MONGODB_URL = YOUR_MONGODB_URL SECRET_KEY = YOUR_JWT_SECRET_KEY PORT = YOUR_PORT CLOUDINARY_CLOUD_NAME = YOUR_CLOUDNAME CLOUDINARY_API_KEY = YOUR_CLOUDINARY_API_KEY CLOUDINARY_API_SECRET = YOUR_CLOUDINARY_API_SECRET CLIENT_URL = YOUR_CLIENT_URL - Create a .env file in the client folder with the following variables
VITE_SERVER_URL = YOUR_SERVER_URL
-
Start the backend:
cd server npm start -
Start the frontend:
cd client npm run dev
- Once both the frontend and backend are running, open the app in your browser (http://localhost:5173).
- Sign up and log in using JWT authentication.
- Start chatting with friends, share images, and make audio/video calls.
Feel free to fork the project, create pull requests, or open issues for improvements. Contributions are welcome!