All Projects → graphql-java → Nadel

graphql-java / Nadel

Licence: mit
A GraphQL DSL and execution engine for distributed schemas

Programming Languages

groovy
2714 projects

Labels

Projects that are alternatives of or similar to Nadel

Sapper Graphql Firebase
Svelte + Sapper + GraphQL + Firebase Auth
Stars: ✭ 88 (-5.38%)
Mutual labels:  graphql
Quell
Quell is an easy-to-use, lightweight JavaScript library providing a client- and server-side caching solution for GraphQL. Use Quell to prevent redundant client-side API requests and to minimize costly server-side response latency.
Stars: ✭ 90 (-3.23%)
Mutual labels:  graphql
Dahlia
An opinionated React Framework. [Rename to pea.js]
Stars: ✭ 92 (-1.08%)
Mutual labels:  graphql
Graphql Net Client
Very simple GraphQL client for .NET/C#
Stars: ✭ 88 (-5.38%)
Mutual labels:  graphql
Prisma Kubernetes Deployment
Demo how to deploy a Prisma server to a Kubernetes cluster.
Stars: ✭ 89 (-4.3%)
Mutual labels:  graphql
Rust graphql api boilerplate
A Boilerplate of GraphQL API built in Rust + Warp + Juniper + Diesel
Stars: ✭ 91 (-2.15%)
Mutual labels:  graphql
Apollo
Meteor & Apollo integration
Stars: ✭ 87 (-6.45%)
Mutual labels:  graphql
Unchained
Headless & open-source e-commerce toolkit. The Unchained Engine is our core product and is written in Node.js ES6
Stars: ✭ 92 (-1.08%)
Mutual labels:  graphql
Graphql Java Datetime
GraphQL ISO Date is a set of RFC 3339 compliant date/time scalar types to be used with graphql-java.
Stars: ✭ 89 (-4.3%)
Mutual labels:  graphql
Uvicorn Gunicorn Starlette Docker
Docker image with Uvicorn managed by Gunicorn for high-performance Starlette web applications in Python 3.7 and 3.6 with performance auto-tuning. Optionally with Alpine Linux.
Stars: ✭ 92 (-1.08%)
Mutual labels:  graphql
Aws Serverless Airline Booking
Airline Booking is a sample web application that provides Flight Search, Flight Payment, Flight Booking and Loyalty points including end-to-end testing, GraphQL and CI/CD. This web application was the theme of Build on Serverless Season 2 on AWS Twitch running from April 24th until end of August in 2019.
Stars: ✭ 1,290 (+1287.1%)
Mutual labels:  graphql
Qlkube
A GraphQL api for Kubernetes
Stars: ✭ 89 (-4.3%)
Mutual labels:  graphql
Meteor Apollo Starter Kit
Meteor, Apollo, React, PWA, Styled-Components boilerplate
Stars: ✭ 91 (-2.15%)
Mutual labels:  graphql
Apollo Link Webworker
Apollo link that lets you use graphql client-side only, with a webworker as a "server" supporting normal queries and subscriptions
Stars: ✭ 88 (-5.38%)
Mutual labels:  graphql
Graphql rails
GraphQL on Rails. Write GraphQL server side in rails way
Stars: ✭ 92 (-1.08%)
Mutual labels:  graphql
Thunder
⚡️ A Go framework for rapidly building powerful graphql services
Stars: ✭ 1,281 (+1277.42%)
Mutual labels:  graphql
Django Graphql Social Auth
Python Social Auth support for Graphene Django
Stars: ✭ 90 (-3.23%)
Mutual labels:  graphql
Docker
Directus Docker — The Official Docker Container for the Directus Suite
Stars: ✭ 93 (+0%)
Mutual labels:  graphql
Angular Fullstack Graphql
🚀 Starter projects for fullstack applications based on Angular & GraphQL.
Stars: ✭ 92 (-1.08%)
Mutual labels:  graphql
Wooshop
A Wocommerce Based React Native App for IOS and Android over GraphQL
Stars: ✭ 92 (-1.08%)
Mutual labels:  graphql

Nadel: A distributed GraphQL engine

Nadel is a Java library to combine several graphql services together. This is achieved by combining several underlying GraphQL services (schemas) into one schema (overall schema).

The main purpose of this library is to power a GraphQL gateway which serves as the entry point for executing requests across different services while presenting one GraphQL API.

Nadel GraphQL Gateway

This is achieved by declaring the services, which should be combined, in a DSL which is build on top of the GraphQL SDL (Schema Definition Language).

While this library is in Java, the underlying services only need to provide a standard GraphQL API and no Java Code is required to combine services together. It is all done declarative as part of the DSL.

Example:

Lets assume we have two Services: "Issues" and "Users". One has Issues and one has Users. An Issue has a reference to its authors.

This is the schema for the Issues service:

type Query {
    issues: [Issue]
}
type Issue {
    id: ID
    authorIds: [ID]
}

And this is the Users service:

type Query {
    users(ids: [ID]): [User]
}
type User {
    id: ID
    fullName: String
}

This is how you would combine these two services together with Nadel while also renaming a field at the same time.

service Issues {
    type Query {
        issues: [Issue]
    }
    type Issue {
        id: ID
        authors: [User] => hydrated from Users.users(ids: $source.authorIds) object identified by id, batch size 10
    }
}

service Users {
    type Query {
        users(ids: [ID]): [User]
    }
    type User {
        id: ID
        name: String => renamed from fullName
    }
}

The result is a new GraphQL API which combines the two services in one and has the following schema:

type Query {
    issues: [Issue]
    users(ids: [ID]): [User]
}       
type Issue {
    id: ID
    authors: [User]
}
type User {
    id: ID
    name: String
}

Features

  • Explicit overall schema design: every field for the overall schema needs to be declared in the Nadel DSL. If it is not declared it will not be exposed
  • Hydration: resolving referencing to other objects by calling another service
  • Field rename: renaming field from the underlying schema to a new name in the overall schema
  • Type rename: renaming a type from the underlying schema to a new name in the overall schema
  • Batching: Hydration calls are automatically batched with a configurable max batch size per call

Getting started

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].