{"id":13514023,"url":"https://github.com/movio/bramble","last_synced_at":"2025-05-15T04:05:11.725Z","repository":{"id":37789016,"uuid":"336140211","full_name":"movio/bramble","owner":"movio","description":"A federated GraphQL API gateway","archived":false,"fork":false,"pushed_at":"2025-05-14T03:06:13.000Z","size":1025,"stargazers_count":501,"open_issues_count":24,"forks_count":57,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-05-14T03:53:15.822Z","etag":null,"topics":["api-gateway","bramble","federation","golang","graphql","graphql-golang","graphql-server"],"latest_commit_sha":null,"homepage":"https://movio.github.io/bramble/","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/movio.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-05T02:23:02.000Z","updated_at":"2025-05-14T03:05:01.000Z","dependencies_parsed_at":"2023-11-21T23:25:17.725Z","dependency_job_id":"c6c014ed-13b9-4ecc-a130-b20d98c3a98c","html_url":"https://github.com/movio/bramble","commit_stats":{"total_commits":346,"total_committers":32,"mean_commits":10.8125,"dds":0.6502890173410405,"last_synced_commit":"63a1c40b1dfe3f236f9d21a5aafdf3305baf64f9"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/movio%2Fbramble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/movio%2Fbramble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/movio%2Fbramble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/movio%2Fbramble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/movio","download_url":"https://codeload.github.com/movio/bramble/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254270643,"owners_count":22042859,"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":["api-gateway","bramble","federation","golang","graphql","graphql-golang","graphql-server"],"created_at":"2024-08-01T05:00:43.627Z","updated_at":"2025-05-15T04:05:06.706Z","avatar_url":"https://github.com/movio.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cimg src=\"docs/bramble-header.svg\" alt=\"Bramble\" width=\"500px\"/\u003e\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/movio/bramble.svg)](https://pkg.go.dev/github.com/movio/bramble)\n[![Go Report Card](https://goreportcard.com/badge/github.com/movio/bramble)](https://goreportcard.com/report/github.com/movio/bramble)\n[![codecov](https://codecov.io/gh/movio/bramble/branch/main/graph/badge.svg)](https://codecov.io/gh/movio/bramble)\n\n[**Full documentation**](https://movio.github.io/bramble)\n\nBramble is a production-ready GraphQL federation gateway.\nIt is built to be a simple, reliable and scalable way to aggregate GraphQL services together.\n\n\u003cimg src=\"docs/overview.png\" alt=\"overview\" style=\"display: block; margin: auto;\" width=\"50%\"/\u003e\n\n## Features\n\nBramble supports:\n\n- Shared types across services\n- Namespaces\n- Field-level permissions\n- Plugins:\n  - JWT, CORS, ...\n  - Or add your own\n- Hot reloading of configuration\n\nIt is also stateless and scales very easily.\n\n## Future work/not currently supported\n\nThere is currently no support for:\n \n  - Subscriptions\n  - Shared unions, interfaces, scalars, enums or inputs across services\n\nCheck FAQ for details: https://movio.github.io/bramble/#/federation?id=restriction-on-subscription\n\n## Contributing\n\nContributions are always welcome!\n\nIf you wish to contribute please open a pull request. Please make sure to:\n\n- include a brief description or link to the relevant issue\n- (if applicable) add tests for the behaviour you're adding/modifying\n- commit messages are descriptive\n\nBefore making a significant change we recommend opening an issue to discuss\nthe issue you're facing and the proposed solution.\n\n### Building and testing\n\nPrerequisite: Go 1.23 or newer\n\nTo build the `bramble` command:\n\n```bash\ngo build -o bramble ./cmd/bramble\n./bramble -config config.json\n```\n\nTo run the tests:\n\n```bash\ngo test ./...\n```\n\n# Running locally\n\nThere is a [docker-compose](./docker-compose.yaml) file that will run bramble and three [example](./examples) services.\n\n```\ndocker-compose up\n```\n\nThe gateway will then be hosted on `http://localhost:8082/query`, be sure to point a GraphQL client to this address.\n\n```graphql\n{\n  randomFoo {\n    nodejs\n    graphGophers\n    gqlgen\n  }\n}\n```\n\n## Comparison with other projects\n\n- [Apollo Server](https://www.apollographql.com/)\n\n  While Apollo Server is a popular tool we felt is was not the right tool for us as:\n\n  - the federation specification is more complex than necessary\n  - it is written in NodeJS where we favour Go\n\n- [Nautilus](https://github.com/nautilus/gateway)\n\n  Nautilus provided a lot of inspiration for Bramble.\n\n  Although the approach to federation was initially similar, Bramble now uses\n  a different approach and supports for a few more things:\n  fine-grained permissions, namespaces, easy plugin configuration,\n  configuration hot-reloading...\n\n  Bramble is also a central piece of software for [Movio](https://movio.co)\n  products and thus is actively maintained and developed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmovio%2Fbramble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmovio%2Fbramble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmovio%2Fbramble/lists"}