A modern, real-time chatting application with Socket.IO, allowing users to connect, chat, and share images instantly.
Live App: View Live App
(AWS Backend): API Status
💡 Tip: To test the chat, create two accounts using different browsers or devices and if you want to use AWS Elasticbeanstalk backend server purchase a domain and convert http to https in AWS then connect it with frontend while hosting.
- User registration and login with JWT authentication
- Password hashing using Bcrypt
- Protected routes with middleware
- Secure token-based sessions
- Instant messaging with Socket.IO
- Send text messages and images
- Live typing indicators
- Message seen/read receipts
- Online/Offline status indicators
- Create and update profile
- Upload profile pictures
- View all registered users
- See who's online in real-time
- Fully responsive UI built with Tailwind CSS
- Modern and clean interface
- Mobile-friendly design
Frontend:
- React.js
- Tailwind CSS
- Socket.IO Client
- Axios
Backend:
- Node.js
- Express.js
- Socket.IO
- MongoDB/Mongoose
- JWT (jsonwebtoken)
- Bcrypt.js
Cloud Services:
- Cloudinary (Image storage)
- Vercel (Frontend hosting)
- AWS Elastic Beanstalk (Backend hosting)
- Render (Backend hosting with HTTPS)
- Frontend: Hosted on Vercel
- Backend: Deployed on both AWS Elastic Beanstalk and Render
- AWS for HTTP endpoint
- Render for HTTPS endpoint (required for Socket.IO in production)
- Node.js (v14 or higher)
- MongoDB
- Cloudinary account
- Git
- Clone the repository
git clone https://github.com/Abhilash-S123/Chat-Application.git
cd Chat-app- Backend Setup
cd server
npm installCreate .env file:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secretStart backend server:
npm run server- Frontend Setup
cd client
npm installCreate .env file:
VITE_API_URL=http://localhost:5000Start development server:
npm run devSocket.IO enables instant bi-directional communication between clients and server, providing:
- Live message delivery
- Typing indicators
- Online/offline status
- Message read receipts
Images are uploaded to Cloudinary for:
- Optimized storage
- Fast CDN delivery
- Automatic image optimization
- Secure URL generation
- User signs up with email and password
- Password is hashed using Bcrypt
- JWT token is generated on login
- Protected routes verify token via middleware
- ✅ Password hashing with Bcrypt
- ✅ JWT token authentication
- ✅ Protected API routes
- ✅ CORS configuration
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
MIT License
Abhilash.S - GitHub Profile
⭐ If you like this project, please give it a star!
