{"id":28299975,"url":"https://github.com/genvekt/cli-chat","last_synced_at":"2025-06-16T16:30:58.570Z","repository":{"id":256360838,"uuid":"827188943","full_name":"Genvekt/cli-chat","owner":"Genvekt","description":"💬 🙋‍♀️Chat based on Golang microservices with gRPC connections","archived":false,"fork":false,"pushed_at":"2024-09-27T14:53:38.000Z","size":4086,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-30T12:37:43.313Z","etag":null,"topics":["clean-architecture","golang","grafana","grpc","jaeger","kafka","postgresql","prometheus"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Genvekt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-11T07:10:01.000Z","updated_at":"2024-09-13T09:08:02.000Z","dependencies_parsed_at":"2024-09-10T10:24:13.586Z","dependency_job_id":null,"html_url":"https://github.com/Genvekt/cli-chat","commit_stats":null,"previous_names":["genvekt/cli-chat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Genvekt/cli-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genvekt%2Fcli-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genvekt%2Fcli-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genvekt%2Fcli-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genvekt%2Fcli-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Genvekt","download_url":"https://codeload.github.com/Genvekt/cli-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genvekt%2Fcli-chat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260197042,"owners_count":22973077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","golang","grafana","grpc","jaeger","kafka","postgresql","prometheus"],"created_at":"2025-05-23T12:17:42.494Z","updated_at":"2025-06-16T16:30:58.555Z","avatar_url":"https://github.com/Genvekt.png","language":"Go","readme":"# cli-chat ![image](https://img.shields.io/badge/Golang-1.22-blue) [![Auth Go report card](https://goreportcard.com/badge/github.com/Genvekt/cli-chat/services/auth)](https://goreportcard.com/report/github.com/Genvekt/cli-chat/services/auth)\n---\n\nChat application based on Golang microservices. Project combines various modern technologies, applying clean architecture principles. \n\n### Technologies\n\n---\n\n- Language: Golang 1.22\n- Protocols: gRPC with TLS, gRPC gateways, HTTP\n- Database: PostgreSQL\n- Event Bus: Kafka\n- Metrics: Prometheus, Grafana, Jaeger\n- Authentication: JWT\n\n### System diagram\n\n---\n![image](.github/media/architecture_diagram.png)\n\n### Project structure\n\n---\nProject structured as monorepository of services, that share common libraries\n```\n├── libraries            # common libraries chared by services\n│   │\n│   ├── api             # gRPC contracts specification with protocol buffers\n│   ├── cache_client    # wrapper for redis client\n│   ├── closer          # applicalion gracefull shutdown utility\n│   ├── db_client       # wrapper for postgres client\n│   ├── kafka           # wrappers for kafka consumer and producer\n│   └── logger          # common logger (zap)\n│\n└── services \n    │\n    ├── auth            # Service that manages users, authenctication and authorisation\n    ├── auth_postgres   # DB for auth service\n    ├── auth_producer   # Service with kafka producer to create random users\n    │\n    ├── chat_server           # Service that manages chats and messages\n    ├── chat_sercer_postgres  # DB for chat_server service\n    │\n    ├── kafka           # Kafka deployment files\n    ├── metrics         # Prometheus and Grafana deployment files\n    └── tracing         # Jaeger deployment files\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenvekt%2Fcli-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenvekt%2Fcli-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenvekt%2Fcli-chat/lists"}