Sandesh is a full-stack real-time chat application that enables users to communicate instantly through personal and group messaging. The application supports image sharing, authentication, online presence tracking, and dynamic message rendering using WebSockets.
Sandesh is designed to simulate a modern messaging platform where users can interact in real time. It implements secure authentication, file uploads, live user status tracking, and efficient message handling using Socket.io.
Authentication & Security
- JWT-based authentication
- Secure login and registration system
- Protected routes using middleware
Messaging System
- One-to-one personal chat
- Group chat functionality
- Real-time messaging using Socket.io
- Message timestamps
- Last message preview displayed in sidebar
User Presence
- Online status indicator
- Last seen tracking system
Media & Uploads
- Profile picture upload using Multer
- Group image upload
- Image sharing inside chat
Additional Functionalities
- Contact search feature
- Dynamic sidebar with contact profile picture
- Last message display for each contact
- Live UI updates without page refresh
Backend
- Node.js
- Express.js
- MongoDB
Frontend
- EJS
- HTML
- CSS
- JavaScript
Real-Time Communication
- Socket.io
Authentication & File Handling
- JWT (JSON Web Token)
- Multer
- MVC-based structure
- RESTful APIs for user and chat management
- WebSocket integration for real-time communication
- Middleware-based authentication system
- Modular routing and organized folder structure
- Clone the repository
git clone https://github.com/yourusername/sandesh.git
- Navigate to the project directory
cd sandesh
- Install dependencies
npm install
- Create a .env file in the root directory and add the following:
PORT=your_port MONGODB_URL=your_mongodb_connection_string JWT_SECRET=your_secret_key
- Start the server
npm start
This project demonstrates:
- Real-time application development using WebSockets
- Secure authentication using JWT
- File handling and uploads with Multer
- Online presence and last seen logic implementation
- Dynamic rendering using EJS
- Search functionality implementation
- Scalable backend structure design
- Message editing and deletion
- Typing indicator
- Read receipts
- Cloud storage integration (AWS S3 or Cloudinary)
- Deployment using Docker
- Responsive UI enhancements
Muskan Verma
Master of Computer Applications
Backend and Real-Time Application Developer