{"repo":"minghsu0107/go-random-chat","free":true,"listed":false,"github":"https://github.com/minghsu0107/go-random-chat","clone":"git clone https://github.com/minghsu0107/go-random-chat.git","description":"Modern real-time chat in scalable architecture.","language":"Go","stars":432,"topics":["redis","kafka","real-time","cassandra","microservices","random-chat","chat","messaging","go"],"license":"MIT","category":"chat-messaging","readme_excerpt":"Go Random Chat Modern real-time chat platform in scalable architecture, written in go. Overview System architecture Features - Real-time communication and efficient websocket handling using Melody. - Microservices architecture. All services are stateless and can be horizontally scaled on demand. - web : frontend server - user : user account server - match : user matching server - chat : messaging server - forwarder : message forwarding server that maps message receivers to specific chat servers - uploader : file uploader - Use gRPC for inter-service communication - with retry, timeout, and circuit breaker - Use cobra and viper for CLI and configuration management respectively. - Dependency injection using wire. - Graceful shutdown. - Observability using Golang Prometheus client for monitoring and opentelemetry-go for tracing. - At-least-once delivery for message Pub/Sub using Kafka. - Persist messages and chat channel metadata in Cassandra, an open source NoSQL distributed database for scalability and high availability. - Automatically generate RESTful API documentation with Swagger 2.0. - User login session management using http-only cookie. - Support Google OAuth2 login. - User matching with idempotency. - Chat channel authentication using JWT. - S3-compatible object storage for uploaded files. - Channel-level file access control using S3 presigned URLs. - Support uploading images from clipboard. - Use Traefik FowardAuth for file upload authentication. - Protect file upload","default_branch":null,"files":null,"tree":[],"storefront":"/r/minghsu0107","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/minghsu0107/go-random-chat/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}