Skip to main content

Getting started

About

GraphGlue is a library to develop annotation-based code-first GraphQL servers using GraphQL Kotlin, Spring Boot and Neo4j.

Installation

Full Installation

implementation("io.github.graphglue", "graphglue", "6.0.1")

Core Installation

This is meant to be used when the project consits of multiple modules, and the module containing the domain model should not provide the beans for the GraphQL server. this has no dependency on com.expediagroup:graphql-kotlin-spring-server, however it still depends on com.expediagroup:graphql-kotlin-server.

implementation("io.github.graphglue", "graphglue-core", "6.0.1")
info

If you want to use Spring Data Repositories, please make sure to annotate your Application class with @EnableGraphGlueRepositories

Features

  • Declare relations in Kotlin
    • Many side of relations are automatically transformed to connections in GraphQL
    • Lazy loading support in Kotlin for easy algorithm implementation
  • GraphQL queries directly translated into Neo4j Cypher
    • One GraphQL query maps to one Cypher query (in case lazy loading and manual authorization checking are not used)
  • Declarative & extensible authorization aproach
    • Specify Node-based authorization using annotations
    • Implement custom logic using Spring beans
    • "Inherit" permissions from other nodes via relations
    • Automatic permission checking when using relations
  • Automatic node GraphQL query and connection-like queries if specified
  • Ordering & Filtering
    • Filter by properties, and even across relations
    • Add custom, property-independent filter using annotations and Spring beans
    • Order by properties
    • Always performed directly in the database
  • Use your favorite GraphQL Kotlin and Spring Data Neo4j features
  • Integrated GraphiQL GraphQL IDE with explorer plugin

Building locally

Build the project:

./gradlew clean build

Deploy to the local maven repository

./gradlew publishToMavenLocal