📣 GraphQLConf 2024 • Sept 10-12 • San Francisco • Read more

Code Using GraphQL

Sort by:
graphql-go
An implementation of GraphQL for Go / Golang.
Last release 11 months ago10kMIT License
99designs/gqlgen
Go generate based graphql server library.
Last release 2 weeks ago10kMIT License
graph-gophers/graphql-go
GraphQL server with a focus on ease of use.
Last release 1 year ago5kBSD 2-Clause "Simplified" License
graphjin
An instant GraphQL to SQL compiler. Use as a standalone service or a Go library. Formerly super-graph.
Last release 3 months ago3kApache License 2.0
samsarahq/thunder
A GraphQL implementation with easy schema building, live queries, and batching.
2kMIT License
genqlient
A truly type-safe Go GraphQL client.
Last release 3 weeks ago1kMIT License
README

genqlient is a Go library to easily generate type-safe code to query a GraphQL API. It takes advantage of the fact that both GraphQL and Go are typed languages to ensure at compile-time that your code is making a valid GraphQL query and using the result correctly, all with a minimum of boilerplate.

genqlient provides:

  • Compile-time validation of GraphQL queries: never ship an invalid GraphQL query again!
  • Type-safe response objects: genqlient generates the right type for each query, so you know the response will unmarshal correctly and never need to use interface{}.
  • Production-readiness: genqlient is used in production at Khan Academy, where it supports millions of learners and teachers around the world.
machinebox/graphql
An elegant low-level HTTP client for GraphQL.
Last release 5 years ago1kApache License 2.0
graphql
A GraphQL client implementation in Go.
1kMIT License
graphql-go-tools
A collection of tools for building GraphQL Servers, Gateways, Proxy Servers and Middleware in Go.
Last release 5 months ago1kMIT License
README

graphql-go-tools implements all basic blocks for building GraphQL Servers, Gateways and Proxy Servers. From lexing, parsing, validation, normalization, all the way up to query planning and execution.

It can also be understood as a GraphQL Compiler, with the ability to add your own backends. Just by implementing a few interfaces, you’re able to teach the compiler how to talk GraphQL to any backend.

The following backends are already implemented: GraphQL, with support for Apollo Federation / Supergraph. Databases: PostgreSQL, MySQL, SQLite, CockroachDB, MongoDB, SQLServer, OpenAPI / REST and Kafka.

To get a sense on how to implement a new backend, check out the Static Data Source, as it’s the simplest one.

It’s used in production by many enterprises for multiple years now, battle tested and actively maintained.

graphql-relay-go
A Go/Golang library to help construct a graphql-go server supporting react-relay.
422MIT License
go-graphql-client
A GraphQL Go client with Mutation, Query and Subscription support.
Last release 3 weeks ago366MIT License
appointy/jaal
Develop spec compliant GraphQL servers in Go.
Last release 3 years ago76MIT License
EGGQL
Easy to use, complete Go implementation of GraphQL. Simple and schema-less.
32MIT License
README

The purpose of Eggql is to make it as simple as possible to create a GraphQL server. You don’t need to create GraphQL schema (though you can view the schema that is created if interested). It is currently in beta release but is a complete implementation of a GraphQL server apart from subscriptions.

Just to be clear it supports all of these GraphQL features: arguments (including defaults), objects/lists/enums/input/interface/union types, aliases, fragments, variables, directives, mutations, inline fragments, descriptions, introspection and custom scalars.

Tests (jMeter) show that it is as fast or faster than other Go implementations for simple queries. We’re working on enhancements for performance including caching, data-loader, complexity-limits, etc.

To run an eggql hello world server just build and run this Go program:

package main

import "github.com/andrewwphillips/eggql"

func main() {
	http.Handle("/graphql", eggql.New(struct{ Message string }{Message: "hello, world"}))
	http.ListenAndServe(":80", nil)
}

This creates a root Query object with a single message field. To test it send a query with curl:

$ curl -XPOST -d '{"query": "{ message }"}' localhost:80/graphql

and you will get this response:

{
  "data": {
    "message": "hello, world"
  }
}