/graphql-registry

GraphQL registry - single source of truth for registering and tracking your graph.

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

graphql-registry

CI BENCH Coverage Status


Note: Are you looking for a Complete API Management for GraphQL Federation? 🔎 Have a look at: WunderGraph Cosmo Includes Schema Registry, analytics, metrics, tracing, and routing. Available for 100% on-prem deployment or as a Managed Service. Apache 2.0 licensed, ensuring no vendor lock-in 🪄


There should be a single source of truth for registering and tracking the graph.

Features

  • Create multiple graphs (for example, staging and production, or different development branches)
  • Stores versioned schemas for all GraphQL-federated services
  • Serves schema for GraphQL gateway based on provided services & their versions
  • Serves a supergraph schema for the GraphQL gateway
  • Validates new schema to be compatible with other running services
  • Validates that all client operations are supported by your schema
  • Calculates a schema coverage report from GraphQL operations
  • Validates if a schema update produce a breaking, dangerous or safe change
  • Lightweight authorization concept based on JWT.

Read more

Examples

API

Try all endpoints in insomnia or read the api documentation.

Development

Copy .env.example to .env

# Install project
npm install
# Start postgres
docker-compose up postgres
# Create db schema
npm run migrate:up
# Watch mode
npm run dev
# Run tests
npm run test

Benchmark

Run a benchmark with:

docker-compose up postgres
docker-compose up --build app
docker-compose run k6 run /benchmark/composed-schema.js

Our benchmark suite is running in the CI.

Deployment

GraphQL-Registry uses by default postgres as database.

# Bootstrap database
npm install && npm run migrate:up
# Run service
docker run -e DATABASE_URL="" starptech/graphql-registry:latest -p 3000:3000

Available environment variables.

Alpha version

GraphQL Registry is currently highly under development. It means that we are still working on essential features like production-ready schema management, graph metrics and development tooling. GraphQL Registry can be evaluated anytime. Every feature is covered by integration tests. We rely on your feedback and sponsorship. Feel free to open an issue or feature request!

Contributing

❤️ contributions!

I will happily accept your pull request if it:

License

GraphQL Registry is open-source under the GNU Affero General Public License Version 3 (AGPLv3) or any later version. You can find it here. Why AGPLv3 and not MIT? Read the blog post from plausible to learn more about our motivations.