Chat application based on Golang microservices. Project combines various modern technologies, applying clean architecture principles.
- Language: Golang 1.22
- Protocols: gRPC with TLS, gRPC gateways, HTTP
- Database: PostgreSQL
- Event Bus: Kafka
- Metrics: Prometheus, Grafana, Jaeger
- Authentication: JWT
Project structured as monorepository of services, that share common libraries
βββ libraries # common libraries chared by services
β β
β βββ api # gRPC contracts specification with protocol buffers
β βββ cache_client # wrapper for redis client
β βββ closer # applicalion gracefull shutdown utility
β βββ db_client # wrapper for postgres client
β βββ kafka # wrappers for kafka consumer and producer
β βββ logger # common logger (zap)
β
βββ services
β
βββ auth # Service that manages users, authenctication and authorisation
βββ auth_postgres # DB for auth service
βββ auth_producer # Service with kafka producer to create random users
β
βββ chat_server # Service that manages chats and messages
βββ chat_sercer_postgres # DB for chat_server service
β
βββ kafka # Kafka deployment files
βββ metrics # Prometheus and Grafana deployment files
βββ tracing # Jaeger deployment files