📣 GraphQLConf 2025 • Sept 08-10 • Amsterdam • Early bird tickets available & sponsorship opportunities open • Learn more

Code Using GraphQL

Sort by:
99designs/gqlgen
Go generate based graphql server library.
Last release 4 days ago10kMIT License
graphql-go
An implementation of GraphQL for Go / Golang.
Last release 1 year ago10kMIT License
graph-gophers/graphql-go
GraphQL server with a focus on ease of use.
Last release 2 years 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 5 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 10 months 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 6 years ago1kApache License 2.0
graphql-go-tools
A collection of tools for building GraphQL Servers, Gateways, Proxy Servers and Middleware in Go.
Last release 5 days 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
A GraphQL client implementation in Go.
1kMIT License
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 months ago414MIT License
appointy/jaal
Develop spec compliant GraphQL servers in Go.
Last release 4 years ago77MIT License
EGGQL
Easy to use, complete Go implementation of GraphQL. Simple and schema-less.
37MIT 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"
  }
}