{"id":17882365,"url":"https://github.com/mgjules/minion","last_synced_at":"2025-03-22T12:32:23.571Z","repository":{"id":57695972,"uuid":"486083258","full_name":"mgjules/minion","owner":"mgjules","description":"A little minion (i.e microservice) that can be replicated to create more minions.","archived":false,"fork":false,"pushed_at":"2023-10-16T20:45:30.000Z","size":816,"stargazers_count":4,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T11:11:30.295Z","etag":null,"topics":["docker","go","golang","kubernetes","microservice","rest-api"],"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/mgjules.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}},"created_at":"2022-04-27T07:04:39.000Z","updated_at":"2023-03-24T17:30:08.000Z","dependencies_parsed_at":"2024-06-20T17:31:23.916Z","dependency_job_id":"22330630-1893-4072-b938-a5c909386c1d","html_url":"https://github.com/mgjules/minion","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Fminion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Fminion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Fminion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Fminion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgjules","download_url":"https://codeload.github.com/mgjules/minion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244959444,"owners_count":20538625,"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":["docker","go","golang","kubernetes","microservice","rest-api"],"created_at":"2024-10-28T12:52:04.727Z","updated_at":"2025-03-22T12:32:23.168Z","avatar_url":"https://github.com/mgjules.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# minion\n\n[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=for-the-badge)](https://godoc.org/github.com/mgjules/minion)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=for-the-badge)](https://conventionalcommits.org)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge)](LICENSE)\n\nA little minion (i.e microservice) that can be replicated to create more minions.\n\n## Contents\n\n- [minion](#minion)\n  - [Contents](#contents)\n  - [Requirements](#requirements)\n  - [Architecture](#architecture)\n  - [The why](#the-why)\n  - [License](#license)\n  - [Stability](#stability)\n\n## Requirements\n\n- [Go 1.20+](https://golang.org/doc/install)\n- [Mage](https://github.com/magefile/mage) - replacement for Makefile in Go.\n- [Golangci-lint](https://github.com/golangci/golangci-lint) - Fast Go linters runner.\n- [Ginkgo](https://github.com/onsi/ginkgo) - Esspressive testing framework.\n- [Docker](https://www.docker.com) - Containerization.\n- [Docker-compose](https://docs.docker.com/compose/install/) - Orchestration of containers.\n\n## Architecture\n\n![Architecture](architecture.svg)\n\nInter-microservice communication is handled using gRPC instead of REST due to its higher performance, smaller payload size and tighter API contract.\n\nBoth Go services are instrumented using [OpenTelemetry](https://opentelemetry.io/) and use environment variables for configuration. Traces, metrics and logs are sent using gRPC to an OpenTelemetry collector, which batches and exports them to a Jaeger and Prometheus service.\n\n## The why\n\nMinion was created to simplify the creation of microservices. It is lightweight and opinionated.\n\nSome of technologies used in this project are:\n\n- [urfave/cli](https://github.com/urfave/cli) - Command line interface.\n- [swag](https://github.com/swaggo/swag) - Generate REST API documentation.\n- [alexliesenfeld/health](https://github.com/alexliesenfeld/health) - Simple and flexible health check library.\n- [jsoniter](https://github.com/json-iterator/go) - High-performance drop-in replacement of `encoding/json`.\n- [zap](https://github.com/uber-go/zap) - Blazing fast, structured, leveled logging in Go.\n- [opentelemetry](https://github.com/open-telemetry/opentelemetry-go) - Open source distributed tracing and metrics.\n- [watermill](https://github.com/ThreeDotsLabs/watermill) - Event messaging.\n- [gin](https://github.com/gin-gonic/gin) - HTTP web framework.\n- [resty](https://github.com/go-resty/resty) - HTTP client.\n\n## License\n\nMinion is Apache 2.0 licensed.\n\n## Stability\n\nThis project follows [SemVer](http://semver.org/) strictly and is not yet `v1`.\n\nBreaking changes might be introduced until `v1` is released.\n\nThis project follows the [Go Release Policy](https://golang.org/doc/devel/release.html#policy). Each major version of Go is supported until there are two newer major releases.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgjules%2Fminion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgjules%2Fminion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgjules%2Fminion/lists"}