{"id":20568739,"url":"https://github.com/agungdwiprasetyo/backend-microservices","last_synced_at":"2025-04-14T16:17:03.734Z","repository":{"id":92213728,"uuid":"235008458","full_name":"agungdwiprasetyo/backend-microservices","owner":"agungdwiprasetyo","description":"Monorepo for backend microservices golang","archived":false,"fork":false,"pushed_at":"2023-03-07T03:17:33.000Z","size":869,"stargazers_count":69,"open_issues_count":1,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-14T16:16:58.960Z","etag":null,"topics":["abstract-factory-pattern","backend","backend-microservices","clean-architecture","codebase","continuous-integration","cronjob-scheduler","golang","graphql","grpc","kafka-consumer","monorepo","redis-pubsub","rest-api","task-queue"],"latest_commit_sha":null,"homepage":"https://api.agungdp.dev/{{service_name}}}}","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/agungdwiprasetyo.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":"2020-01-20T03:06:21.000Z","updated_at":"2025-03-15T20:28:40.000Z","dependencies_parsed_at":"2023-06-08T00:15:46.288Z","dependency_job_id":null,"html_url":"https://github.com/agungdwiprasetyo/backend-microservices","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agungdwiprasetyo%2Fbackend-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agungdwiprasetyo%2Fbackend-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agungdwiprasetyo%2Fbackend-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agungdwiprasetyo%2Fbackend-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agungdwiprasetyo","download_url":"https://codeload.github.com/agungdwiprasetyo/backend-microservices/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248914117,"owners_count":21182359,"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":["abstract-factory-pattern","backend","backend-microservices","clean-architecture","codebase","continuous-integration","cronjob-scheduler","golang","graphql","grpc","kafka-consumer","monorepo","redis-pubsub","rest-api","task-queue"],"created_at":"2024-11-16T04:54:28.746Z","updated_at":"2025-04-14T16:17:03.722Z","avatar_url":"https://github.com/agungdwiprasetyo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backend Microservices\n\n## Made with\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://storage.googleapis.com/agungdp/static/logo/golang.png\" width=\"80\" alt=\"golang logo\" /\u003e\n \u003cimg src=\"https://storage.googleapis.com/agungdp/static/logo/docker.png\" width=\"80\" hspace=\"10\" alt=\"docker logo\" /\u003e\n \u003cimg src=\"https://storage.googleapis.com/agungdp/static/logo/rest.png\" width=\"80\" hspace=\"10\" alt=\"rest logo\" /\u003e\n \u003cimg src=\"https://storage.googleapis.com/agungdp/static/logo/graphql.png\" width=\"80\" alt=\"graphql logo\" /\u003e\n \u003cimg src=\"https://storage.googleapis.com/agungdp/static/logo/grpc.png\" width=\"160\" hspace=\"15\" vspace=\"15\" alt=\"grpc logo\" /\u003e\n \u003cimg src=\"https://storage.googleapis.com/agungdp/static/logo/kafka.png\" height=\"80\" alt=\"kafka logo\" /\u003e\n\u003c/p\u003e\n\nThis repository explain implementation of Go for building multiple microservices using a single codebase. Using [Standard Golang Project Layout](https://github.com/golang-standards/project-layout) and [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)\n\n## Create new service (for new project)\nPlease install **latest** [**candi**](https://pkg.agungdp.dev/candi) CLI first, and then:\n```\n$ candi -init\n```\nIf include GRPC handler, run this command (must install `protoc` compiler min version `libprotoc 3.14.0`):\n\n```\n$ make proto service={{service_name}}\n```\n\nIf using SQL database, run this command for migration:\n```\n$ make migration service={{service_name}} dbconn=\"{{YOUR DATABASE URL CONNECTION}}\"\n```\n\n## Run all services\n```\n$ candi -run\n```\n\n## Run specific service or multiple services\n```\n$ candi -run -service {{service_a}},{{service_b}}\n```\n\n## Add module(s) in specific service (project)\n```\n$ candi -add-module -service {{service_name}}\n```\n\n## Run unit test and calculate code coverage\n* **Generate mocks first (using [mockery](https://github.com/vektra/mockery)):**\n```\n$ make mocks service={{service_name}}\n```\n* **Run test:**\n```\n$ make test service={{service_name}}\n```\n\n## Run sonar scanner\n```\n$ make sonar level={{level}} service={{service_name}}\n```\n`{{level}}` is service environment, example: `dev`, `staging`, or `prod`\n\n## Create docker image a service\n```\n$ make docker service={{service_name}}\n```\n\n## Services\n\n* [**Auth Service**](https://github.com/agungdwiprasetyo/backend-microservices/tree/master/services/auth-service)\n* [**Line Chatbot**](https://github.com/agungdwiprasetyo/backend-microservices/tree/master/services/line-chatbot#line-chatbot-service)\n* [**Notification Service**](https://github.com/agungdwiprasetyo/backend-microservices/tree/master/services/notification-service)\n* [**Storage Service**](https://github.com/agungdwiprasetyo/backend-microservices/tree/master/services/storage-service)\n* [**User Service**](https://github.com/agungdwiprasetyo/backend-microservices/tree/master/services/user-service)\n* [**Master Service**](https://github.com/agungdwiprasetyo/backend-microservices/tree/master/services/master-service)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagungdwiprasetyo%2Fbackend-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagungdwiprasetyo%2Fbackend-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagungdwiprasetyo%2Fbackend-microservices/lists"}