A real-time chat web application with friend system, online status, and message history — built using React, Node.js, Express, Socket.IO, and MongoDB.
👉 https://echoconverse.netlify.app/login
- 🔒 JWT-based authentication with cookie sessions
- 🧑🤝🧑 Friend request system (Send / Accept / Reject)
- 🔍 User search with live status (online/offline)
- 💬 Real-time chat with Socket.IO
- 💾 Chat message history stored in MongoDB
- 🎨 Modern and responsive UI with Tailwind CSS
- ✅ Protected routes via React Router
- Express 5
- MongoDB + Mongoose
- JWT + cookie-session
- Socket.IO
- Dotenv, CORS, Bcrypt
- 🔗 Deployed on: Render
- React 19
- React Router v7
- Tailwind CSS
- Lucide-react
- Socket.IO Client
- JWT Decode
- 🚀 Deployed on: Netlify
📦 CHATWEBAPP
├── client # React frontend
│ ├── public
│ ├── src
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page-level components (e.g., Home, Chat)
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Utility functions
│ │ ├── context/ # Context providers (e.g., AuthContext)
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── index.html
│ └── vite.config.js
├── server # Express backend
│ ├── config/ # Database connection and environment setup
│ ├── controller/ # Route handler logic (auth, chat, users)
│ ├── middleware/ # Authentication and error-handling middleware
│ ├── model/ # Mongoose schemas and models
│ ├── routes/ # API endpoint definitions
│ ├── sockets/ # Socket.IO event handlers
│ ├── server.js # Main Express app entry point
│ └── .env # Environment variables
├── README.md
# From root directory
npm install
npm run dev # Runs server with nodemonREFRESH_TOKEN_KEY=refresh_secret_key
ACCESS_TOKEN_KEY=access_secret_key
DATABASE_URL=mongo_db
CLIENT_ORIGIN=frontent_domain
cd client
npm install
npm run dev # Starts React app on localhost:5173