A modern real-time chat application built with React, Node.js, and WebSocket technology.
- User registration and login
- Guest access for quick start
- Customizable user avatars
- Real-time presence indicators
- User status management (Online, Away, Busy, Offline)
- Real-time message delivery
- Channel-based conversations
- Direct messaging between users
- Message threading for organized discussions
- Typing indicators
- Rich text formatting
- Message history with infinite scroll
- Public channels for team-wide communication
- Channel creation and management
- Channel member list
- Channel-specific notifications
- File attachments support
- Image previews
- PDF document support
- File size limits and type restrictions
- Secure file storage
- Emoji reactions to messages
- Thread-based replies
- Message timestamps
- User avatars in messages
- Full-text search across messages
- File search by name
- Search results with context
- Quick navigation to search results
- Instant message delivery
- Live typing indicators
- Real-time status updates
- Connection state management
- Automatic reconnection
-
Frontend:
- React with TypeScript
- Tailwind CSS for styling
- shadcn/ui components
- React Query for data management
- Socket.IO client for real-time features
-
Backend:
- Node.js with Express
- PostgreSQL with Drizzle ORM
- Socket.IO for WebSocket communication
- Multer for file uploads
-
Clone the repository: ```bash git clone https://github.com/yourusername/chatgenius.git cd chatgenius ```
-
Install dependencies: ```bash npm install ```
-
Set up your environment variables: ```env DATABASE_URL="postgresql://username:password@localhost:5432/chatgenius" ```
-
Run database migrations: ```bash npm run db:push ```
-
Start the development server: ```bash npm run dev ```
- Register a new account or use guest access
- Join existing channels or create new ones
- Start chatting with real-time message delivery
- Use threads to organize conversations
- Share files and react to messages
- Search through messages and files
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.