{"id":29019196,"url":"https://github.com/alexfalkowski/go-monolith","last_synced_at":"2026-05-13T11:01:20.852Z","repository":{"id":301018284,"uuid":"1007817750","full_name":"alexfalkowski/go-monolith","owner":"alexfalkowski","description":"A template to have a distributed monolith.","archived":false,"fork":false,"pushed_at":"2026-05-08T05:58:35.000Z","size":727,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-08T07:41:05.460Z","etag":null,"topics":["cucumber","golang","make","monolith","ruby"],"latest_commit_sha":null,"homepage":"https://alexfalkowski.github.io/go-monolith","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/alexfalkowski.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-24T15:17:14.000Z","updated_at":"2026-05-08T05:56:15.000Z","dependencies_parsed_at":"2026-04-20T09:01:48.819Z","dependency_job_id":null,"html_url":"https://github.com/alexfalkowski/go-monolith","commit_stats":null,"previous_names":["alexfalkowski/go-monolith"],"tags_count":184,"template":true,"template_full_name":"alexfalkowski/go-service-template","purl":"pkg:github/alexfalkowski/go-monolith","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexfalkowski%2Fgo-monolith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexfalkowski%2Fgo-monolith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexfalkowski%2Fgo-monolith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexfalkowski%2Fgo-monolith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexfalkowski","download_url":"https://codeload.github.com/alexfalkowski/go-monolith/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexfalkowski%2Fgo-monolith/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32979305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T06:31:55.726Z","status":"ssl_error","status_checked_at":"2026-05-13T06:31:51.336Z","response_time":115,"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":["cucumber","golang","make","monolith","ruby"],"created_at":"2025-06-26T00:08:24.563Z","updated_at":"2026-05-13T11:01:20.823Z","avatar_url":"https://github.com/alexfalkowski.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/alexfalkowski/go-monolith.svg?style=svg)](https://circleci.com/gh/alexfalkowski/go-monolith)\n[![codecov](https://codecov.io/gh/alexfalkowski/go-monolith/graph/badge.svg?token=S9SPVVYQAY)](https://codecov.io/gh/alexfalkowski/go-monolith)\n[![Go Report Card](https://goreportcard.com/badge/github.com/alexfalkowski/go-monolith)](https://goreportcard.com/report/github.com/alexfalkowski/go-monolith)\n[![Go Reference](https://pkg.go.dev/badge/github.com/alexfalkowski/go-monolith.svg)](https://pkg.go.dev/github.com/alexfalkowski/go-monolith)\n[![Stability: Active](https://masterminds.github.io/stability/active.svg)](https://masterminds.github.io/stability/active.html)\n\n# Monolith\n\nThere has been tremendous amounts of time being spent on creating [microservices](https://microservices.io/), though is this the place to start?\n\nIt is not a trick question, of course not. It is best to start with a monolith and transition to [microservices](https://martinfowler.com/articles/break-monolith-into-microservices.html) when needed.\n\n## Background\n\nAfter many years of seeing [distributed monoliths](https://www.gremlin.com/blog/is-your-microservice-a-distributed-monolith). This could potentially be a compromise.\n\n### Why a service?\n\nThis project allows us to use a [mono repository](https://monorepo.tools/) approach to build connected services.\n\n## Server\n\nThis no different to the other services we are built, they just contain it all together.\n\n### API\n\nThe [api](api) are where we define out [protobuf](https://protobuf.dev/) services.\n\n### Servers\n\nAll the [servers](internal/api) are defined in a [usual way](https://grpc.io/docs/languages/go/basics/).\n\nEach of the services talks to each other via a [client](internal/api/client). As all of this is running through [localhost](https://en.wikipedia.org/wiki/Localhost).\n\nEach service is reachable by defining [REST](https://github.com/alexfalkowski/go-service/tree/master/net/http/rest) endpoints.\n\n## Health\n\nThe system defines a way to monitor all of it's dependencies.\n\nTo configure we just need the have the following configuration:\n\n```yaml\nhealth:\n  duration: 1s (how often to check)\n  timeout: 1s (when we should timeout the check)\n```\n\n## Other Systems\n\n[gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) works in a similar way.\n\n## Development\n\nIf you would like to contribute, here is how you can get started.\n\n### Structure\n\nThe project follows the structure in [golang-standards/project-layout](https://github.com/golang-standards/project-layout).\n\n### Dependencies\n\nPlease make sure that you have the following installed:\n\n- [Ruby](https://www.ruby-lang.org/en/)\n- [Golang](https://go.dev/)\n\n### Style\n\nThis project favours the [Uber Go Style Guide](https://github.com/uber-go/guide/blob/master/style.md)\n\n### Setup\n\nCheck out [CI](.circleci/config.yml).\n\n### Changes\n\nTo see what has changed, please have a look at `CHANGELOG.md`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexfalkowski%2Fgo-monolith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexfalkowski%2Fgo-monolith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexfalkowski%2Fgo-monolith/lists"}