A full-stack real-time chat application built with modern web technologies. Features instant messaging, offline support, typing indicators, and seamless message synchronization across devices.
- Real-time Messaging - Instant message delivery with WebSocket connections
- Typing Indicators - See when others are typing in real-time
- Online Presence - Live user status updates
- File Sharing - Image uploads with Cloudinary integration
- Responsive Design - Works seamlessly on desktop and mobile
- Offline Message Queuing - Messages are stored locally and sent when back online
- Automatic Retry Logic - Failed messages retry with exponential backoff
- Infinite Scroll Pagination - Smooth loading of large chat histories
- Virtual Scrolling - Optimized performance for thousands of messages
- Cursor-based Pagination - Efficient database queries for message history
- JWT Authentication - Secure login with token rotation
- End-to-end Type Safety - TypeScript across frontend and backend
- Input Validation - Comprehensive validation on client and server
- Rate Limiting - Protection against abuse and DDoS attacks
- React 18 with TypeScript
- Zustand for state management
- Socket.IO Client for real-time communication
- Tailwind CSS for styling
- React Router for navigation
- Axios for API calls
- Node.js with Express
- Socket.IO for WebSocket connections
- MongoDB with Mongoose
- JWT for authentication
- Cloudinary for file storage
- bcryptjs for password hashing
- TypeScript end-to-end
- ESLint & Prettier for code quality
- React Hot Toast for notifications
- Lucide React for icons
- Node.js 16+
- MongoDB 4.4+
- npm or yarn