Bramble is a production-ready GraphQL federation gateway. It is built to be a simple, reliable and scalable way to aggregate GraphQL services together.
- Shared types across services
- Field-level permissions
- JWT, Open tracing, CORS, ...
- Or add your own
- Hot reloading of configuration
It is also stateless and scales very easily.
Future work/not currently supported
There is currently no support for subscriptions.
Contributions are always welcome!
If you wish to contribute please open a pull request. Please make sure to:
- include a brief description or link to the relevant issue
- (if applicable) add tests for the behaviour you're adding/modifying
- commit messages are descriptive
Before making a significant change we recommend opening an issue to discuss the issue you're facing and the proposed solution.
Building and testing
Prerequisite: Go 1.15 or newer
To build the
go build -o bramble ./cmd ./bramble -conf config.json
To run the tests:
go test ./...
Comparison with other projects
While Apollo Server is a popular tool we felt is was not the right tool for us as:
- the federation specification is more complex than necessary
- it is written in NodeJS where we favour Go
Nautilus provided a lot of inspiration for Bramble.
Although the approach to federation is similar Bramble has support for a few more things: fine-grained permissions, namespaces, easy plugin configuration, configuration hot-reloading...
Bramble is also a central piece of software for Movio products and thus is actively maintained and developed.