๐ Authentication โข ๐ฌ Real-time messaging โข ๐ข Online users โข ๐ผ๏ธ Cloudinary uploads
Chatify is a full-stack real-time chat app built with Node.js, Express, MongoDB, React (Vite), and Socket.IO.
- Frontend (Vercel): https://chatify-plum.vercel.app/
- Backend (Render): https://chatify-backend-4qij.onrender.com/
๐ A production-ready real-time chat app with a scalable MERN backend and low-latency Socket.IO messaging.
- ๐ Cookie-based JWT authentication (signup/login/logout)
- ๐ฌ Real-time chat with Socket.IO
- ๐ข Online user tracking
- ๐ผ๏ธ Profile picture upload via Cloudinary
- ๐จ Modern UI (React + Tailwind) with Zustand state management
- Backend: Node.js, Express, MongoDB (Mongoose), JWT (cookie-based), Socket.IO
- Frontend: React, Vite, Zustand, Axios, Tailwind CSS, Socket.IO Client
- Media: Cloudinary (uploads stored in Cloudinary, DB stores image URL)
LIVE_CHAT/
โโโ Readme.md
โโโ Home.png
โโโ Login.png
โโโ Backend/ # Express + MongoDB + Socket.IO
โ โโโ src/
โ โ โโโ app.js # Express app + socket bootstrap
โ โ โโโ controllers/
โ โ โ โโโ authController.js
โ โ โ โโโ messageController.js
โ โ โโโ routes/
โ โ โ โโโ authRoute.js
โ โ โ โโโ messageRoute.js
โ โ โโโ middlewares/
โ โ โ โโโ authMiddleware.js
โ โ โโโ model/
โ โ โ โโโ userModel.js
โ โ โ โโโ messageModel.js
โ โ โโโ lib/
โ โ โโโ cloudinary.js
โ โ โโโ socket.js
โ โ โโโ token.js
โ โโโ package.json
โ โโโ .env.example
โโโ Frontend/
โโโ vite-project/ # React (Vite) client
โโโ src/
โ โโโ Pages/
โ โ โโโ HomePage.jsx
โ โ โโโ LoginPage.jsx
โ โ โโโ ProfilePage.jsx
โ โ โโโ SignUpPage.jsx
โ โโโ components/
โ โ โโโ ChatContainer.jsx
โ โ โโโ ChatHeader.jsx
โ โ โโโ MessageInput.jsx
โ โ โโโ Messages.jsx
โ โ โโโ Navbar.jsx
โ โ โโโ NoChatSelected.jsx
โ โ โโโ Sidebar.jsx
โ โ โโโ UserChatHeader.jsx
โ โโโ store/
โ โ โโโ authStore.js
โ โ โโโ chatStore.js
โ โโโ lib/
โ โ โโโ axios.js
โ โ โโโ utils.js
โ โโโ App.jsx
โ โโโ main.jsx
โโโ public/
โโโ vite.config.js
โโโ package.json
- Node.js installed
- MongoDB connection string (Atlas or local)
- Cloudinary account
cd Backend
npm installCreate Backend/.env (copy from Backend/.env.example):
copy .env.example .envStart backend:
npm startcd Frontend/vite-project
npm installCreate Frontend/vite-project/.env (copy from .env.example):
copy .env.example .envStart frontend:
npm run dev| Variable | Required | Description |
|---|---|---|
PORT |
โ | Server port |
MONGODB_URI |
โ | MongoDB connection string |
secretKey |
โ | JWT secret used to sign cookies |
CLIENT_URL |
โ | Frontend URL allowed by CORS (Vercel domain) |
CLOUDINARY_CLOUD_NAME |
โ | Cloudinary cloud name |
CLOUDINARY_API_KEY |
โ | Cloudinary API key |
CLOUDINARY_SECRET_KEY |
โ | Cloudinary API secret |
| Variable | Required | Description |
|---|---|---|
VITE_API_BASE_URL |
โ | Backend API base URL (e.g. http://localhost:5000/api) |
VITE_SOCKET_URL |
โ | Backend socket URL (e.g. http://localhost:5000) |
- Deploy
Backend/as a Node service. - Set env vars from
Backend/.envin Render dashboard. - Set
CLIENT_URL= your Vercel frontend domain.
- Deploy
Frontend/vite-project/. - Set
VITE_API_BASE_URLandVITE_SOCKET_URLto your deployed Render backend URLs.
- Fixed CORS issues during deployment
- Managed socket connections across environments
- Handled cookie-based authentication in production
- CORS errors: make sure backend
CLIENT_URLmatches your deployed frontend domain. - Socket not connecting: ensure
VITE_SOCKET_URLpoints to backend. - Uploads failing: verify Cloudinary env vars.
Built by Avinash.

