{"id":25180355,"url":"https://github.com/hjyup/translatify","last_synced_at":"2025-06-11T18:36:33.752Z","repository":{"id":276495514,"uuid":"921419016","full_name":"HJyup/translatify","owner":"HJyup","description":"chat application with async translation","archived":false,"fork":false,"pushed_at":"2025-05-21T22:21:57.000Z","size":385,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-21T23:28:30.754Z","etag":null,"topics":["golang","grpc","microservice","rabbitmq","service-workers","websocket"],"latest_commit_sha":null,"homepage":"https://translatify.danyilbutov.com/reference","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HJyup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-01-23T23:04:04.000Z","updated_at":"2025-05-21T22:21:54.000Z","dependencies_parsed_at":"2025-03-10T23:22:51.053Z","dependency_job_id":"644bdbd8-d849-42c9-a72c-6861554faf3d","html_url":"https://github.com/HJyup/translatify","commit_stats":null,"previous_names":["hjyup/translatify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HJyup/translatify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HJyup%2Ftranslatify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HJyup%2Ftranslatify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HJyup%2Ftranslatify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HJyup%2Ftranslatify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HJyup","download_url":"https://codeload.github.com/HJyup/translatify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HJyup%2Ftranslatify/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259317063,"owners_count":22839533,"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":["golang","grpc","microservice","rabbitmq","service-workers","websocket"],"created_at":"2025-02-09T16:17:44.315Z","updated_at":"2025-06-11T18:36:33.719Z","avatar_url":"https://github.com/HJyup.png","language":"Go","readme":"# Translatify\n\n\u003e [!NOTE]  \n\u003e This project isn’t intended to become a fully completed product—it’s more of a big sandbox for me to experiment with and deepen my Go knowledge. It’s a place where I can apply and test new concepts in real-world scenarios, such as an asynchronous chat application. Feel free to check it out if you’re interested!\n\n--- \n\n## Overview\n**Translatify** is a **scalable microservices-based translation and messaging system** designed to provide real-time, AI-powered translations, seamless messaging, and an efficient API gateway. It leverages **gRPC, RabbitMQ, OpenTelemetry, and Consul** to enable distributed and high-performance communication between services.\n\n## Features\n- **AI-Powered Translations** → Uses **OpenAI GPT-4** for context-aware translations.\n- **Real-Time Messaging** → Supports **one-to-one chat** with WebSocket support.\n- **API Gateway** → Centralized API management with **authentication and routing**.\n- **Service Discovery** → Uses **Consul** for dynamic service registration and discovery.\n- **Distributed Tracing** → Implements **Jaeger \u0026 OpenTelemetry** for observability.\n- **Message Queueing** → Uses **RabbitMQ** for asynchronous processing.\n- **gRPC \u0026 REST Support** → Exposes services via **gRPC \u0026 gRPC-Gateway (REST APIs)**.\n\n## Microservices Architecture\n### **1. Translation Service**\n- Provides AI-based translations using **OpenAI API**.\n- Implements **caching** to optimize API usage.\n- Listens to **RabbitMQ** for batch translation requests.\n\n### **2. Chat Service**\n- Manages **one-to-one messaging** between users.\n- Stores chat history in **PostgreSQL**.\n- Supports **WebSockets** for real-time updates.\n\n### **3. Gateway Service**\n- Acts as the **entry point** for all API requests.\n- Uses **Clerk** for authentication and token validation.\n- Routes requests to respective microservices.\n\n### **4. Common Module**\n- Provides shared **utilities** for logging, environment handling, JSON processing, and database scanning.\n- Implements **service discovery, message queueing, and tracing**.\n\n## Tech Stack\n- **Programming Language:** Go\n- **API Communication:** gRPC, gRPC-Gateway (REST)\n- **Service Discovery:** Consul\n- **Messaging Queue:** RabbitMQ\n- **Tracing \u0026 Monitoring:** OpenTelemetry, Jaeger\n- **Database:** PostgreSQL\n- **Authentication:** Clerk\n- **Containerization:** Docker\n\n## Installation \u0026 Setup\n### Prerequisites\n- Docker\n- Go (v1.22+)\n- PostgreSQL\n- RabbitMQ\n- Consul\n- Clerk API Key\n- OpenAI API Key (for Translation Service)\n\n### Steps to Run the System\n1. Clone the repository:\n   ```sh\n   git clone https://github.com/HJyup/translatify.git\n   cd translatify\n   ```\n\n2. Set up environment variables:\n   ```sh\n   cp .env.example .env\n   ```\n   Edit `.env` with necessary credentials (RabbitMQ, PostgreSQL, Consul, OpenAI API Key, Clerk API Key).\n\n3. Build and run services using Docker:\n   ```sh\n   docker-compose up --build\n   ```\n\n4. Alternatively, run services manually:\n   ```sh\n   go run services/translation/cmd/main.go\n   go run services/chat/cmd/main.go\n   go run services/gateway/cmd/main.go\n   ```\n\n## Contributing\nWe welcome contributions! Please submit a PR following our guidelines.\n\n## License\nMIT License. See `LICENSE` for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhjyup%2Ftranslatify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhjyup%2Ftranslatify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhjyup%2Ftranslatify/lists"}