Real-time MERN Stack Chat Application with C Logo, Green Theme & Advanced Messaging
- Frontend (Vercel):
https://chat-app-using-mern-stack-sigma.vercel.app - Backend (Render):
https://chatapp-using-mern-stack.onrender.com
Login with demo:
pankaj@gmail.com / pankaj123
- β One-to-one & Group chats (10 members)
- β Real-time messaging via Socket.IO
- β Online / Offline status with green dot
- β
Typing indicator
typing... - β Message ticks: Single β sent (offline), Double ββ grey delivered (online), Double ββ blue #53BDEB read (seen)
- β Unread badges, scroll-to-bottom with count
- π C Logo Branding - Green circle C icon everywhere (replaced WhatsApp icon)
- π’ Green Theme #00A884 / #25D366 / #F0F2F5 / #E5DDD5
- π Emoji Picker - 40+ emojis, frequently used, categories
- π· Image Sharing - Preview + base64 upload, 2MB limit
- π€ Profile Photo Upload - Click camera icon, base64, instant Redux update
- β Starred Messages, Reply Preview (green left border)
- π Search Chats + Filters: All / Unread / Groups (working with counts)
- π¦ Archived Chats UI, Date Pills, ChatApp bubbles with tails
- π Notifications with sound + green badge
- 22 Users with gender-specific avatars (randomuser.me men/women)
- 20 Single chats (Pankaj β others)
- 4 Group chats (Family, Office, College, MERN Devs - 10 members each)
- 150+ Messages with ticks, emoji, image, star, reply
- Auto-seeds when DB empty, skips if 22 users exist - No need to run again
| Layer | Tech |
|---|---|
| Frontend | React 18, Vite, Tailwind CSS, Redux Toolkit, React Router, React Icons, Socket.IO Client |
| Backend | Node 18.17.1, Express 4.19, Mongoose 8.4, Socket.IO 4.7, JWT, Bcrypt, Multer |
| Database | MongoDB Atlas (Free 512MB) |
| Deployment | Vercel (Frontend), Render (Backend) - Free lifetime |
ChatApp/
βββ backend/
β βββ config/jwtProvider.js
β βββ controllers/
β β βββ auth.js (lowercase email, bcrypt check logs)
β β βββ chat.js (single + group)
β β βββ message.js (text/image/emoji, status, star, reply)
β β βββ user.js (profile update with image)
β βββ models/
β β βββ user.js (about, phone, isOnline, lastSeen, gender avatars)
β β βββ chat.js (groupImage, isMuted, isArchived)
β β βββ message.js (messageType, messageStatus, imageUrl, isStarred, replyTo, readBy)
β βββ routes/
β β βββ auth.js (signup, signin)
β β βββ chat.js (get, post, group, delete, rename)
β β βββ message.js (post, get, clear, status, star)
β β βββ user.js (profile, users, update, online)
β βββ seed/
β β βββ whatsappSeed.js (manual 22 users)
β β βββ autoSeed.js (auto one-time, checks count)
β β βββ forceFix22.js (permanent fix, deletes manual 1 user, creates 22 with bcrypt PASS check)
β β βββ fixLogin.js (reset pankaj password)
β βββ server.js (CORS, 10mb limit, autoSeedIfNeeded, socket onlineUsers Map, delivered/read events)
β βββ package.json (nodemon in devDependencies, seed scripts)
β βββ .env.example
βββ frontend/
β βββ public/
β β βββ logo.jpeg (C Logo 3.1KB)
β β βββ c-logo.png (C Logo)
β βββ src/
β β βββ assets/
β β β βββ c-logo.png (Circle C green - main logo)
β β β βββ logo.jpeg (C logo)
β β βββ components/
β β β βββ Header.jsx (ChatApp logo only, no by Pankaj badges, profile dropdown z-999 fixed)
β β β βββ Footer.jsx (Minimal: All rights reserved 2026 Pankaj Prajapati)
β β β βββ chatComponents/
β β β β βββ MyChat.jsx (Filters All/Unread/Groups working with counts)
β β β β βββ UserSearch.jsx, GroupChatBox.jsx
β β β β βββ ChatNotSelected.jsx (C logo centered, no encryption text, centered image+text)
β β β βββ messageComponents/
β β β β βββ MessageBox.jsx (Clean status: Online/Offline/Typing only, no tick text)
β β β β βββ AllMessages.jsx (Wallpaper, bubbles, ticks grey/blue, star, reply preview, hover actions)
β β β β βββ MessageSend.jsx (Pill input, emoji picker, attach menu, mic FAB)
β β β β βββ EmojiPicker.jsx (320x320, categories)
β β β βββ ProfileDetail.jsx (Camera icon upload base64, about edit)
β β βββ pages/
β β β βββ SignIn.jsx (C logo, no Demo Tip, lowered form mt-8 md:mt-12)
β β β βββ SignUp.jsx (No π paragraph, lowered form mt-8)
β β β βββ Home.jsx (onlineUsers tracking, delivered/read listeners)
β β β βββ Error.jsx (C logo, light theme)
β β βββ redux/ (auth, myChat, message, condition)
β β βββ socket/ (VITE_BACKEND_URL dynamic)
β β βββ index.css (ChatApp theme #00A884, #F0F2F5, #E5DDD5, bubble tails, shimmer light)
β βββ index.html (Title: ChatApp - by Pankaj Prajapati)
β βββ tailwind.config.js (ChatApp colors)
β βββ package.json (name: chatapp)
βββ README.md
- Node 18.17.1+
- MongoDB Atlas URI or local Mongo
git clone https://github.com/PrajapatiPankaj1/ChatApp.git
cd ChatAppcd backend
npm installCreate backend/.env:
PORT=9000
FRONTEND_URL=http://localhost:5173
MONGODB_URI=mongodb+srv://chatapp:Chatapp123@cluster0.qoqxfbz.mongodb.net/chat-app?retryWrites=true&w=majority&appName=Cluster0
JWT_SECRET=d710114d38648bc3f16ec1e33e557149d00aaa87a068af36ffce5e528d33392ad674a1ce6b4578fce62896bb46ac6102a3786b9077e03cd3d2871df000a883d2
AUTO_SEED=true
NODE_ENV=developmentRun:
npm run dev
# π Server listening on 9000
# β
Database Connection established - ChatApp by Pankaj Prajapati
# π± DB Empty - Auto seeding... 22 users, 20 chats, 4 groups - One time only!
# π Login: pankajprajapti9764@gmail.com / pankaj123cd ../frontend
npm installCreate frontend/.env:
VITE_BACKEND_URL=http://localhost:9000
VITE_APP_NAME=ChatApp
VITE_COPYRIGHT=All rights reserved 2026 Pankaj PrajapatiRun:
npm run dev
# http://localhost:5173Main: pankajprajapti9764@gmail.com / pankaj123
Others (password same):
arjun.sharma@gmail.com / password123 (male men/10.jpg)
priya.sharma@gmail.com / password123 (female women/10.jpg)
If login fails
cd backend
npm run seed:clear # Empty DB
npm run seed:force # Permanent 22 users with bcrypt PASS checkNo need to seed again - Auto checks DB already has 22 users - No need to seed again.
Pankaj Prajapati
- Email: pankajprajapti9764@gmail.com
- GitHub: https://github.com/PrajapatiPankaj1/
- LinkedIn: https://www.linkedin.com/in/pankaj-prajapati1/
Β© All rights reserved 2026 Pankaj Prajapati - ChatApp