A Real-Time Word Cloud Chat Platform
Features • Installation • Usage • Technical Stack • Contributing • License
ChatCloud is an innovative web application that combines the visual appeal of word clouds with the functionality of real-time chat rooms. It creates a unique social experience where conversations are discovered through an interactive visualization of popular topics.
Users can:
- Discover trending topics via an interactive word cloud (words sized by popularity)
- Join or create chat rooms by clicking on words
- Chat anonymously in real-time while retaining access to previous rooms
- See conversations evolve as the word cloud updates in real-time
- Dynamic D3.js visualization that updates in real-time
- Words sized according to popularity
- Smooth animations and transitions
- Click on words to join topic-specific chat rooms
- Autocomplete feature for adding new topics
- Suggestions based on existing topics to prevent duplicates
- Keyboard navigation support for suggestions
- Visual feedback showing topic popularity
- Comprehensive CSS design system with consistent variables
- Responsive layout with sticky header and sidebar organization
- Enhanced typography with gradient effects
- Intuitive navigation and visual feedback
- Optimized message streams for better performance
- Global topic room for word cloud updates
- Individual chat room streams established only when needed
- Automatic cleanup of unused connections
- Anonymous user identification with UUID
- Usernames for chat participation
- Cross-session persistence via localStorage
- Retain access to previously joined rooms
- Docker and Docker Compose
-
Clone the repository
git clone https://github.com/egesarisac/chatcloud.git cd chatcloud -
Start all services with Docker Compose
docker-compose up
This will start all required services:
- Redis database
- Go backend server
- Envoy proxy for gRPC-Web
- Vue.js frontend
-
Access the application
Open your browser and navigate to
http://localhost:3000
If you want to run the services individually for development:
-
Start Redis
docker-compose up -d redis
-
Run the Backend
cd backend go run main.go -
Run the Frontend
cd frontend npm install npm run dev
- Vue 3: Progressive JavaScript framework
- Vite: Next-generation frontend tooling
- D3.js: Data visualization library for the word cloud
- gRPC-Web: Client for backend communication
- Go: High-performance gRPC server
- Redis: For message storage and pub/sub functionality
- Protocol Buffers: For efficient data serialization
- Docker: Containerization
- Envoy Proxy: For gRPC-Web translation
- Docker Compose: Multi-container orchestration
chatcloud/
├── backend/ # Go gRPC server
│ ├── Dockerfile # Backend container configuration
│ ├── go.mod # Go dependencies
│ ├── main.go # Entry point
│ ├── proto/ # Generated protobuf code
│ └── server/ # Server implementation
├── frontend/ # Vue 3 frontend
│ ├── Dockerfile # Frontend container configuration
│ ├── public/ # Static assets
│ ├── src/ # Source code
│ │ ├── components/# Vue components
│ │ ├── services/ # API clients
│ └── vite.config.js # Vite configuration
├── proto/ # Protocol Buffers definitions
├── docker-compose.yml # Multi-container configuration
└── envoy.yaml # Envoy Proxy configuration for gRPC-Web
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Distributed under the MIT License.