A sophisticated chat application that enables one-on-one as well as group messaging with real-time capabilities. This platform demonstrates how modern technologies can be integrated to offer a secure and scalable communication experience.
Check out the Demo Video
-
Authentication
Secure login and registration using email and password with JWT stored in cookies for session management. -
Search Users
Search functionality to find users via username or email. -
Profile Image Management
Users can upload profile images stored and served via Supabase Storage. -
Real-time Messaging
Built usingsocket.ioto support instant messaging across devices. -
One-on-One Chat
Initiate private conversations between two users. -
Group Chat
Chat with multiple users in a shared group space.- Create Group: Add users and name the group.
- Add Members: Invite new participants.
- Remove Members: Remove existing participants.
- Rename Group: Edit group name.
- Exit Group: Leave the group.
-
UX Enhancements
- Loading indicators to show ongoing actions.
- Proper error handling with meaningful messages.
- UI messages for empty states and unavailable data.
- Form validation using
FormikandYup. - Fully responsive across devices.
- React.js
- Chakra UI / Tailwind CSS
- Formik & Yup (Form handling & validation)
- Axios (HTTP requests)
- Socket.io-client
- Node.js
- Express.js
- MongoDB (Database)
- Mongoose (ORM)
- Socket.io
- Supabase Storage
- JSON Web Tokens (JWT)
- Cookie-parser
- Bcrypt (Password hashing)
- VS Code - Development environment
- Postman - API testing
- Render / Vercel - Deployment
- GitHub - Version control
- Built using React.js
- Socket connection initialized once and shared via context
- State management with hooks and context API
- Axios interceptors for authenticated API requests
- Modular structure with reusable components
- REST API built with Express.js
- Socket.io server for real-time communication
- Secure authentication with JWT and cookies
- Modular routes and middleware for scalability
- MongoDB models to manage user and chat data
To run this project locally:
Navigate to the respective repositories to find the instructions to run this application
This project with a MIT license giving permissive usage. For more information, refer to the LICENSE file