A real-time chat application built using the MERN stack (MongoDB, Express.js, React, Node.js) with Socket.IO for real-time communication. This app allows users to register, log in, create one-on-one or group chats, and exchange messages instantly.
- 🧑💻 User authentication (JWT-based)
- 🔐 Secure password hashing with bcrypt
- 📦 Persistent message storage using MongoDB
- ⚡ Real-time messaging with Socket.IO
- 🧵 Private and group chat support
- 🖼️ Profile pictures using Cloudinary (or local storage)
- 🔔 Online users and typing indicators
- 📱 Responsive UI built with React + Tailwind CSS (or Bootstrap)
Frontend:
- React
- Axios
- React Router
- Tailwind CSS
Backend:
- Node.js
- Express.js
- MongoDB + Mongoose
- Socket.IO
- JSON Web Tokens (JWT)
- bcrypt
- Node.js & npm
- MongoDB (local or cloud)
- Cloudinary account (optional, for image uploads)
git clone https://github.com/sahilmd01/converse-pro.git
cd converse-procd backend
npm installCreate a .env file in the backend/ folder and add:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secretcd ../frontend
npm installcd backend
npm run devcd frontend
npm startOpen your browser and navigate to http://localhost:5173.
Include some screenshots or GIFs showing the app in action:
- Login page
- Chat dashboard
- Group chat
- Typing indicator
mern-chat-app/
├── backend/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── config/
│ └── server.js
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ └── App.js
└── README.md
POST /api/user/register– Register new userPOST /api/user/login– Login user
GET /api/chat/– Get user's chatsPOST /api/chat/– Create new chatPOST /api/chat/group– Create group chat
GET /api/message/:chatId– Get messages in a chatPOST /api/message/– Send new message
Contributions are welcome! Please fork the repository and submit a pull request.
This project is licensed under the MIT License.
SAHIL GitHub • LinkedIn • youtube