• Stars
    star
    497
  • Rank 88,652 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 4 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A federated GraphQL API gateway

Bramble

Go Reference Go Report Card codecov

Full documentation

Bramble is a production-ready GraphQL federation gateway. It is built to be a simple, reliable and scalable way to aggregate GraphQL services together.

overview

Features

Bramble supports:

  • Shared types across services
  • Namespaces
  • Field-level permissions
  • Plugins:
    • JWT, 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
  • Shared unions, interfaces, scalars, enums or inputs across services

Check FAQ for details: https://movio.github.io/bramble/#/federation?id=restriction-on-subscription

Contributing

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.17 or newer

To build the bramble command:

go build -o bramble ./cmd/bramble
./bramble -conf config.json

To run the tests:

go test ./...

Running locally

There is a docker-compose file that will run bramble and three example services.

docker-compose up

The gateway will then be hosted on http://localhost:8082/query, be sure to point a GraphQL client to this address.

{
  randomFoo {
    nodejs
    graphGophers
    gqlgen
  }
}

Comparison with other projects

  • Apollo Server

    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

    Nautilus provided a lot of inspiration for Bramble.

    Although the approach to federation was initially similar, Bramble now uses a different approach and supports 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.

More Repositories

1

samza-prometheus-exporter

Feed Apache Samza metrics into Prometheus
Python
12
star
2

aws-prometheus-exporter

Feed AWS API call results into Prometheus
Python
12
star
3

akka-patterns

Scala
9
star
4

react-native-rsa-signer

RSA signer for JWS Tokens
Swift
5
star
5

maxwell-prometheus-exporter

Feed Maxwell metrics into Prometheus
Python
5
star
6

spaceapps-streamgazer

Animate or visualize changes in streamflow across the US through time on a GIS layer of the stream and river network.
Clojure
5
star
7

movio-todomvc

Movio's TodoMVC stack
JavaScript
4
star
8

movio-react-components

Work in progress
JavaScript
3
star
9

spray-dynamic-routing-example

Example of how to have dynamically configurable endpoints with spray
Scala
3
star
10

sbt-examples

Some simple examples on how to create an sbt plugins
Scala
3
star
11

scan

Purely functional scan abstraction for Scala
Scala
3
star
12

rocksdb-prometheus-exporter

Feed RocksDB metrics into Prometheus.
Python
2
star
13

maxwell-faker

Fake data generator for Maxwell
Python
2
star
14

healthcheck-prometheus-exporter

Feed Health Check metrics into Prometheus.
Go
2
star
15

babel-preset-movio

Babel preset recommended at Movio
JavaScript
1
star
16

icfp-2014

Clojure
1
star
17

itrgen

Golang generator for type safe iterables. eg `Map` functions for slices
Go
1
star
18

icfp-2015

Scala
1
star
19

movio-apidoc-generator

Code gen for http://apidoc.me
Scala
1
star
20

movio-nightwatch-examples

Movio example setup and tests using NightwatchJS and Selenium Web Driver.
JavaScript
1
star
21

careers-presentation-2013

Presentation Given at Auckland Uni 8th Aug - ** includes the treasure hunt **
JavaScript
1
star
22

spark-sql-prometheus-exporter

Run spark.sql queries and push results to Pushgateway.
Scala
1
star