Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ChatApp πŸ’¬

Real-time MERN Stack Chat Application with C Logo, Green Theme & Advanced Messaging

MERN Socket Tailwind


✨ Live Demo

  • 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


πŸ“Έ Screenshots

image image image image image

πŸš€ Features

Core Chat

  • βœ… 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

Advanced (ChatApp Special)

  • πŸ’š 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

Demo Data (Auto-Seed - One Time)

  • 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

πŸ› οΈ Tech Stack

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

πŸ“ Project Structure

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

⚑ Quick Start (Local)

Prerequisites

  • Node 18.17.1+
  • MongoDB Atlas URI or local Mongo

1. Clone

git clone https://github.com/PrajapatiPankaj1/ChatApp.git
cd ChatApp

2. Backend

cd backend
npm install

Create 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=development

Run:

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 / pankaj123

3. Frontend

cd ../frontend
npm install

Create frontend/.env:

VITE_BACKEND_URL=http://localhost:9000
VITE_APP_NAME=ChatApp
VITE_COPYRIGHT=All rights reserved 2026 Pankaj Prajapati

Run:

npm run dev
# http://localhost:5173

πŸ”‘ Demo Login (After Auto-Seed)

Main: 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 check

No need to seed again - Auto checks DB already has 22 users - No need to seed again.

πŸ‘¨β€πŸ’» Author

Pankaj Prajapati

Β© All rights reserved 2026 Pankaj Prajapati - ChatApp

Releases

Packages

Contributors

Languages