A modern full-stack real-time chat application built with the MERN Stack, Socket.IO, and JWT Authentication.
π§ Status: Actively Under Development
- About
- Features
- Tech Stack
- Project Architecture
- Folder Structure
- Screenshots
- Installation
- Environment Variables
- Running Locally
- API Overview
- Socket Events
- Roadmap
- Known Issues
- Future Improvements
- Learning Outcomes
- Deployment
- Contributing
- Author
Chat Karo is a real-time chat application built to explore production-level full-stack development using the MERN Stack.
The project focuses on:
- REST API Development
- JWT Authentication
- Real-Time Communication using Socket.IO
- MongoDB Database Design
- Redux State Management
- Secure Backend Architecture
- Cloud Deployment
This project is continuously improving as I learn more advanced backend and frontend concepts.
- User Registration
- User Login
- JWT Authentication
- Protected Routes
- Real-Time Messaging
- Online User Status
- Responsive User Interface
- MongoDB Integration
- REST APIs
- Socket.IO Communication
- Secure Password Hashing
- Cloud Deployment
-
Emoji Support
-
User Profiles
-
Friend Requests
-
Push Notifications
-
File Sharing
-
Image Sharing
-
Message Reactions
-
Message Delete
-
Message Edit
-
User Search
- React.js
- Vite
- Redux Toolkit
- React Router DOM
- Axios
- Socket.IO Client
- CSS
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT
- Socket.IO
- bcrypt
- Cookie Parser
- Multer
User
β
βΌ
React + Redux Frontend
β
REST API + Socket.IO Client
β
βΌ
Express.js Backend
β β
β β
JWT Authentication Socket.IO
β β
βββββββββ¬ββββββββ
β
MongoDB Atlas
Chat-App
β
βββ Backend
β βββ Controller
β βββ Middleware
β βββ models
β βββ routes
β βββ Sockets
β βββ uploads
β βββ Utilities
β βββ app.js
β βββ server.js
β βββ package.json
β βββ package-lock.json
β
βββ Frontend
β βββ public
β βββ src
β βββ index.html
β βββ vite.config.js
β βββ eslint.config.js
β βββ package.json
β βββ package-lock.json
β βββ README.md
β
βββ README.md
Clone the repository
git clone https://github.com/Code-with-saurabh/Chat-app.gitGo inside the project
cd Chat-appcd Backend
npm install
npm startcd Frontend
npm install
npm run devPORT=
MONGO_URI=
JWT_SECRET=
CLIENT_URL=VITE_API_URL=
VITE_SOCKET_URL=https://chat-karo-test-1.abasthan.app/login
https://fold-wry-gecko.abasthan.app/
| Method | Endpoint | Description |
|---|---|---|
| POST | /register | Register User |
| POST | /login | Login User |
| POST | /logout | Logout User |
| GET | /users | Get Users |
| GET | /messages | Fetch Messages |
| POST | /message | Send Message |
| Event | Description |
|---|---|
| connection | User Connected |
| disconnect | User Disconnected |
| sendMessage | Send Message |
| receiveMessage | Receive Message |
| onlineUsers | Update Online Users |
-
β Authentication
-
β JWT Authorization
-
β Socket.IO Integration
-
β Real-Time Messaging
-
β Online Users
-
β³ Typing Indicator
-
β³ Notifications
-
β³ Image Sharing
-
β³ File Upload
-
β³ Dark Mode
- Some UI improvements are in progress.
- Performance optimizations are ongoing.
- More validations will be added in future releases.
- Docker Support
- Redis Caching
- PostgreSQL + Prisma
- CI/CD Pipeline
- Unit Testing
- Integration Testing
- AWS Deployment
- Nginx Reverse Proxy
- Kubernetes Deployment
- WebRTC Video Calling
During this project I learned:
- Full Stack Application Development
- REST API Design
- MongoDB Schema Design
- Authentication using JWT
- Password Hashing
- Socket.IO
- Redux Toolkit
- Cloud Deployment
- Backend Folder Structure
- Production-Level Project Organization
| Service | Platform |
|---|---|
| Frontend | Abasthan |
| Backend | Abasthan |
| Database | MongoDB Atlas |
Contributions are welcome.
If you'd like to improve the project:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push your branch
- Open a Pull Request
Saurabh Sharma
MERN Stack Developer
GitHub: https://github.com/Code-with-saurabh
If you found this project helpful,
Please consider giving it a β on GitHub.
It helps motivate me to continue building and improving open-source projects.
Made with β€οΈ by Saurabh Sharma









