{"id":26436185,"url":"https://github.com/valpere/trytrago","last_synced_at":"2026-04-14T19:31:46.811Z","repository":{"id":277665151,"uuid":"933143258","full_name":"valpere/trytrago","owner":"valpere","description":"API server for a multilanguage dictionary written in Golang.","archived":false,"fork":false,"pushed_at":"2026-02-16T15:16:16.000Z","size":2595,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-16T22:14:47.982Z","etag":null,"topics":["api-server","caching","cobra","docker","docker-compose","gin","golang","gorm","jwt","openapi","protobuf","redis","rest-api","swagger","testify","uber-zap","viper"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/valpere.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":"docs/SecurityEnhancementsSummary.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-15T08:49:53.000Z","updated_at":"2026-02-16T15:16:06.000Z","dependencies_parsed_at":"2025-02-15T09:28:09.561Z","dependency_job_id":"b484575a-ed26-4bf1-9c95-a1439158012e","html_url":"https://github.com/valpere/trytrago","commit_stats":null,"previous_names":["valpere/trytrago"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/valpere/trytrago","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valpere%2Ftrytrago","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valpere%2Ftrytrago/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valpere%2Ftrytrago/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valpere%2Ftrytrago/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valpere","download_url":"https://codeload.github.com/valpere/trytrago/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valpere%2Ftrytrago/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31812968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api-server","caching","cobra","docker","docker-compose","gin","golang","gorm","jwt","openapi","protobuf","redis","rest-api","swagger","testify","uber-zap","viper"],"created_at":"2025-03-18T08:15:32.788Z","updated_at":"2026-04-14T19:31:46.802Z","avatar_url":"https://github.com/valpere.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TryTraGo\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/valpere/trytrago)](https://goreportcard.com/report/github.com/valpere/trytrago)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/valpere/trytrago)](https://go.dev/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\nTryTraGo is a high-performance multilanguage dictionary server designed to support approximately 60 million dictionary entries with robust API functionality, social features, and multi-database support.\n\n## Features\n\n- **Comprehensive Dictionary Functionality**\n  - Dictionary entries with meanings and translations\n  - Support for multiple word types (words, compound words, phrases)\n  - Pronunciation information\n\n- **Social Features**\n  - Comments on meanings and translations\n  - Like/unlike functionality\n  - User profiles and contributions tracking\n\n- **Clean Architecture**\n  - Domain-driven design with clear separation of concerns\n  - Four-layer architecture (domain, application, interface, infrastructure)\n  - Highly testable and maintainable codebase\n\n- **Multi-Database Support**\n  - PostgreSQL (primary for production)\n  - MySQL (alternative)\n  - SQLite (development and testing)\n\n- **Technology Stack**\n  - Go 1.24+\n  - Gin web framework\n  - GORM for database access\n  - JWT authentication\n  - Uber-zap for structured logging\n  - Redis for caching\n\n## Quick Start\n\n### Prerequisites\n\n- Go 1.24 or higher\n- Docker and Docker Compose (for local development)\n- PostgreSQL, MySQL, or SQLite\n\n### Installation\n\n1. Clone the repository\n\n```bash\ngit clone https://github.com/valpere/trytrago.git\ncd trytrago\n```\n\n2. Install dependencies\n\n```bash\nmake setup\n```\n\n3. Build the application\n\n```bash\nmake build\n```\n\n4. Run database migrations\n\n```bash\nmake db-init\n```\n\n5. Start the server\n\n```bash\nmake run\n```\n\n### Docker\n\nRun using Docker:\n\n```bash\nmake docker-run\n```\n\nOr with Docker Compose:\n\n```bash\nmake docker-compose-up\n```\n\n## API Usage\n\nTryTraGo provides a RESTful API for all dictionary operations. You can view the API documentation at:\n\n- Swagger UI: `http://localhost:8080/swagger-ui.html`\n- OpenAPI Specification: `http://localhost:8080/v3/api-docs`\n\n### Authentication\n\n```bash\n# Register a new user\ncurl -X POST http://localhost:8080/api/v1/auth/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\":\"testuser\",\"email\":\"test@example.com\",\"password\":\"password123\"}'\n\n# Login and get a token\ncurl -X POST http://localhost:8080/api/v1/auth/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"username\":\"testuser\",\"password\":\"password123\"}'\n```\n\n### Dictionary Operations\n\n```bash\n# List entries\ncurl http://localhost:8080/api/v1/entries\n\n# Create a new entry (requires authentication)\ncurl -X POST http://localhost:8080/api/v1/entries \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"word\":\"example\",\"type\":\"WORD\",\"pronunciation\":\"ɪɡˈzæmpəl\"}'\n```\n\n## Development\n\n### Project Structure\n\n```\ntrytrago/\n├── application/      # Application services and DTOs\n├── cmd/              # CLI commands\n├── docker/           # Docker configuration\n├── docs/             # Documentation\n├── domain/           # Core business entities and interfaces\n├── infrastructure/   # External details implementations\n├── interface/        # HTTP handlers and middleware\n├── migrations/       # Database migration files\n├── scripts/          # Utility scripts\n├── test/             # Test suites\n└── main.go           # Application entry point\n```\n\n### Make Commands\n\n```bash\n# Development workflow\nmake setup            # Install development dependencies\nmake build            # Build the application\nmake run              # Run the application\nmake test             # Run unit tests\nmake test-all         # Run all tests (unit, integration, API)\nmake lint             # Run linter\n\n# Database operations\nmake migrate          # Run migrations\nmake db-init          # Initialize database\nmake db-reset         # Reset database\nmake migration-create # Create new migration files\n\n# Docker\nmake docker-build     # Build Docker image\nmake docker-run       # Run Docker container\n\n# Documentation\nmake docs             # Generate API documentation\n```\n\n## Configuration\n\nTryTraGo uses a YAML configuration file. You can specify the configuration file location using the `--config` flag:\n\n```bash\n./build/trytrago server --config=/path/to/config.yaml\n```\n\nExample configuration:\n\n```yaml\nserver:\n  port: 8080\n  timeout: 30s\n\ndatabase:\n  type: postgres\n  host: localhost\n  port: 5432\n  name: trytrago\n  user: postgres\n  password: postgres\n\nlogging:\n  level: info\n  format: json\n```\n\n## Deployment\n\nFor detailed deployment instructions, please refer to [README_DEPLOY.md](docs/README_DEPLOY.md).\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## Weaknesses\n\nIdentified Weaknesses and Improvement Opportunities: [Code Analysis: TryTraGo Dictionary Server](docs/WEAKNESSES.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalpere%2Ftrytrago","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalpere%2Ftrytrago","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalpere%2Ftrytrago/lists"}