A real-time chat application built with React and Node.js using WebSocket technology for instant messaging.
- Real-time messaging - Instant message delivery using WebSocket connections
- Room-based chat - Join different chat rooms with multiple users
- User management - Track users in each room with live updates
- Emoji support - Built-in emoji picker for expressive messaging
- Responsive design - Modern UI with custom components and styling
- Message types - Different styling for own messages, others, and bot notifications
- Express.js server with Socket.IO for WebSocket connections
- Modular structure with separated handlers, services, and utilities
- In-memory user management for active chat sessions
- CORS enabled for cross-origin requests
- React 19 with TypeScript for type safety
- React Router for navigation between pages
- Less with CSS modules for styling
- Socket.IO Client for real-time communication
- Node.js - Runtime environment
- Express.js - Web framework
- Socket.IO - WebSocket library for real-time communication
- CORS - Cross-origin resource sharing
- dotenv - Environment variable management
- React 19 - UI library
- TypeScript - Type-safe JavaScript
- Socket.IO Client - WebSocket client
- React Router DOM - Client-side routing
- Less - CSS preprocessor
- Emoji Picker React - Emoji selection component
- React Icons - Icon library
- Vite - Build tool and dev server
websocket-chat-app/
βββ backend/
β βββ config/ # Configuration files
β βββ constants/ # Application constants
β βββ database/ # User management logic
β βββ routes/ # Express routes
β βββ socket/ # WebSocket handlers
β β βββ handlers/ # Event handlers
β β βββ events.js # Socket event constants
β β βββ socketManager.js
β βββ utils/ # Utility functions
β βββ index.js # Main server file
βββ frontend/
βββ src/
β βββ components/ # Reusable UI components
β βββ pages/ # Application pages
β βββ styles/ # Global styles and variables
β βββ types/ # TypeScript type definitions
β βββ constants/ # Frontend constants
βββ public/ # Static assets
- Uses WebSocket connections for instant message delivery
- No page refresh needed for new messages
- Live user count updates in each room
- Own messages - Light purple background, dark text
- Other users - Dark background, light text
- Bot messages - Blue background, white text (for join/leave notifications)
- Multiple users can join the same room
- Users are tracked per room
- Automatic notifications when users join or leave