{"id":15295168,"url":"https://github.com/tochemey/gopack","last_synced_at":"2026-02-01T19:03:12.855Z","repository":{"id":176690504,"uuid":"658051226","full_name":"Tochemey/gopack","owner":"Tochemey","description":"GoPack","archived":false,"fork":false,"pushed_at":"2026-01-16T08:12:40.000Z","size":488,"stargazers_count":4,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-16T22:50:45.570Z","etag":null,"topics":["go","golang","grpc","logger","microservices","opentelemetry-go","postgres","protocol-buffers","rpc"],"latest_commit_sha":null,"homepage":"","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/Tochemey.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"code_of_conduct.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-24T16:00:09.000Z","updated_at":"2026-01-02T09:17:01.000Z","dependencies_parsed_at":"2026-01-01T06:00:22.967Z","dependency_job_id":null,"html_url":"https://github.com/Tochemey/gopack","commit_stats":null,"previous_names":["tochemey/gopack"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Tochemey/gopack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgopack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgopack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgopack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgopack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tochemey","download_url":"https://codeload.github.com/Tochemey/gopack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgopack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28986385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T18:17:03.387Z","status":"ssl_error","status_checked_at":"2026-02-01T18:16:57.287Z","response_time":56,"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":["go","golang","grpc","logger","microservices","opentelemetry-go","postgres","protocol-buffers","rpc"],"created_at":"2024-09-30T17:08:55.383Z","updated_at":"2026-02-01T19:03:12.826Z","avatar_url":"https://github.com/Tochemey.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎒GoPack\n\n[![build](https://img.shields.io/github/actions/workflow/status/Tochemey/gopack/build.yml?branch=main)](https://github.com/Tochemey/gopack/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/Tochemey/gopack/branch/main/graph/badge.svg?token=LJO3LHe1Ox)](https://codecov.io/gh/Tochemey/gopack)\n\nGoPack is kind of your Swiss Army Knife for golang services.\nThe project adheres to [Semantic Versioning](https://semver.org)\nand [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).\n\n## Features\n\n- [gRPC](./grpc) - contains client and server\n    - Traces and Metrics are automatically handled depending upon the configuration.\n    - ratelimiter interceptors (unary/stream) for both client and server\n    - trace interceptors (unary/stream) for both client and server\n    - metrics interceptors (unary/stream) for both client and server\n    - recovery interceptors (unary/stream) for both client and server\n    - request id interceptors (unary/stream) for both client and server\n    - customizable options for both gRPC client and server\n    - testkit to start a gRPC test server\n- [Postgres](./postgres) - contains postgres database interface to execute SQL statement with postgres with traces and metrics out of the box.\n    - testkit to smoothly implement unit/integration tests with postgres\n- [OpenTelemetry](./otel) - contains trace and metrics provider to simplify the creation of trace and metrics providers.\n    - testkit to create an opentelemetry test collector\n- [Scheduler](./scheduler) - contains a crontab library to implement job schedulers.\n- [Zap logger](./log/zapl) wrapper with _request_id_, _trace_id_ and _span_id_ injected to log when present in the context\n- [Request ID](./requestid) - contains request ID injection with appropriate interceptors and handlers.\n- [Validation](./validation) - contains a simple validation library.\n- [Errors Chain](./errorschain) - contains an simple errors chain library.\n- [Stream](./stream) - contains a simple in-memory pubsub\n- [Ticker](./ticker) - contains an enhanced golang ticker\n- [Timer Pool](./timerpool) - contains a timer pool for memory efficiency\n- [Collection](./collection) - contains some thread-safe collections like map, slice and queue\n- [Future](./future) - contains a future library to handle async calls\n- [GCP PubSub](./gcp/pubsub) - contains wrappers around the Google PubSub api to:\n  - [Tooling](./gcp/pubsub/tooling.go) - create, list topics\n  - [Publisher](./gcp/pubsub/publisher.go) - publish messages to [GCP PubSub](https://cloud.google.com/pubsub/docs)\n  - [Subscriber](./gcp/pubsub/subscriber.go) - consume messages from [GCP PubSub](https://cloud.google.com/pubsub/docs)\n  - [Emulator](./gcp/pubsub/emulator.go) - contains a [GCP PubSub](https://cloud.google.com/pubsub/docs) Emulator.\n\n### Note\n\nTraces and Metrics are accessible via the integration\nwith [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-go).\n\n## Contribution\n\nContributions are welcome!\nThe project adheres to [Semantic Versioning](https://semver.org)\nand [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).\nThis repo uses [Earthly](https://earthly.dev/get-earthly).\n\nTo contribute please:\n\n- Fork the repository\n- Create a feature branch\n- Submit a [pull request](https://help.github.com/articles/using-pull-requests)\n\n### Test \u0026 Linter\n\nPrior to submitting a [pull request](https://help.github.com/articles/using-pull-requests), please run:\n\n```bash\nearthly +test\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftochemey%2Fgopack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftochemey%2Fgopack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftochemey%2Fgopack/lists"}