Chat App is a full-stack messaging platform built on the MERN stack. It combines Socket.io for real-time bidirectional communication with a REST API for persistent data, giving you instant message delivery, live online-presence indicators, and durable conversation history — all in a single deployable package.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/khushboodaryani/Chat-App/llms.txt
Use this file to discover all available pages before exploring further.
Quickstart
Clone the repo, set your environment variables, and have the app running locally in minutes.
Configuration
Learn about every environment variable the app needs before going to production.
REST API Reference
Explore all HTTP endpoints for authentication, messaging, and user management.
WebSocket Events
Understand the Socket.io events that power real-time delivery and online presence.
Key Features
Real-Time Messaging
Messages are delivered instantly via Socket.io — no polling required.
JWT Authentication
HTTP-only cookie-based JWTs protect every private route and Socket.io connection.
Online Presence
See who is online in real time. The sidebar updates live as users connect and disconnect.
Persistent Storage
All messages and conversations are stored in MongoDB and survive page refreshes.
How It Works
Create an account
Register with your full name, username, password, and gender. A profile avatar is generated automatically.
Browse your contacts
The sidebar loads all other registered users. Search by name to narrow the list.
Start chatting
Select any user to open a conversation. Messages are delivered instantly and persisted for future sessions.
Technology Stack
| Layer | Technology |
|---|---|
| Frontend | React 18, React Router v6, Zustand, Tailwind CSS, DaisyUI |
| Backend | Node.js, Express 4, Socket.io 4 |
| Database | MongoDB (Mongoose ODM) |
| Auth | JSON Web Tokens (HTTP-only cookies) |
| Build | Vite (frontend), served as static files from Express |
The backend serves the compiled React build as static files, so the entire application deploys as a single Node.js process with no separate frontend server needed.