I'd like to share my side project: https://github.com/minghsu0107/go-random-chat
This is a random chat application built in a microservices architecture. An user can pair with a random person and chat in real-time.
This project is built with scalability in mind. I used websocket for real-time messaging, Kafka for message Pub/Sub (to make chat service stateless), Redis for caching and user matching, Cassandra for message persistence, JWT & session for authentication, and gRPC for inter-service communication. Other common features like Google OAuth2 login, file uploads (object storage), observability (Prometheus & Opentelemetry), dependency injection (wire), CLI (cobra), and config management (viper) are also implemented.
I hope you will find this helpful. Any PR is welcome!