Fast :zap: reverse proxy in front of any GraphQL server for caching, securing and monitoring.

Fast reverse proxy in front of any GraphQL server for caching, securing and monitoring.

Unit Tests codecov Go Report Card Go Reference Artifact Hub

Features

  • 💾 Caching
    • RFC7234 compliant HTTP Cache.
    • Cache query operations results through types.
    • Auto invalidate cache through mutation operations.
    • Swr query results in background.
    • Cache query results to specific headers, cookies (varies).
  • 🔐 Securing
    • Disable introspection.
    • Limit operations depth, nodes and complexity.
  • 📈 Monitoring (Prometheus metrics)
    • Operations in flight.
    • Operations count.
    • Operations request durations.
    • Operations caching statuses.

How it works

Every single request sent by your clients will serve by GBox. The GBox reverse proxy will cache, validate, and collect metrics before pass through requests to your GraphQL server.

Diagram

Documentation

The GBox documentation can be browsed on Github page.

Inspiration

The GBox has been inspired by many others related work including:

Thanks to all the great people who created these projects!

Owner
GBox Proxy
Fast :zap: GraphQL reverse proxy server for caching, securing, and monitoring.
GBox Proxy
Similar Resources

An implementation of GraphQL for Go / Golang

graphql An implementation of GraphQL in Go. Follows the official reference implementation graphql-js. Supports: queries, mutations & subscriptions. Do

Dec 26, 2022

Convert Golang Struct To GraphQL Object On The Fly

Straf Convert Golang Struct To GraphQL Object On The Fly Easily Create GraphQL Schemas Example Converting struct to GraphQL Object type UserExtra stru

Oct 26, 2022

⚡️ A Go framework for rapidly building powerful graphql services

Thunder is a Go framework for rapidly building powerful graphql servers. Thunder has support for schemas automatically generated from Go types, live q

Dec 24, 2022

gqlanalysis makes easy to develop static analysis tools for GraphQL in Go.

gqlanalysis makes easy to develop static analysis tools for GraphQL in Go.

gqlanalysis gqlanalysis defines the interface between a modular static analysis for GraphQL in Go. gqlanalysis is inspired by go/analysis. gqlanalysis

Dec 14, 2022

Tools to write high performance GraphQL applications using Go/Golang.

graphql-go-tools Sponsors WunderGraph Are you looking for a GraphQL e2e data fetching solution? Supports frameworks like NextJS, type safety with gene

Dec 27, 2022

GraphQL implementation for click house in Go.

GraphQL implementation for click house in Go.

clickhouse-graphql-go GraphQL implementation for clickhouse in Go. This package stores real time streaming websocket data in clickhouse and uses Graph

Nov 20, 2022

GraphQL parser comparison in different languages

graphql-parser-bench Parsing a schema or document can be a critical part of the application, especially if you have to care about latency. This is the

Jul 10, 2022

proof-of-concept minimal GraphQL service for LTV

LTV GraphQL Proof-of-Concept This is a barebones proof-of-concept of a possible GraphQL implementation that interacts with Core. It includes a few ver

Jan 4, 2022

Learn GraphQL with THE IDOLM@STER SHINY COLORS.

faaaar Learn GraphQL with THE IDOLM@STER SHINY COLORS. Getting Started The following is a simple example which get information about 20-year-old idols

Dec 11, 2022
Comments
  • Getting a CORS preflight check error from my web application

    Getting a CORS preflight check error from my web application

    First off, just wanted to say awesome work! I got this hitting my Hasura instance in Docker and the caching seems to works really well, even for nested types. I want to at least get this working and maybe slow roll into production if I can master what needs to be cached.

    With that out of the way, I'm using docker-compose to run this with Hasura locally, as an API to my React app. I'm able to hit the playground just fine, but when I try to use it in my web app I get a CORS preflight error due to it missing the access-control-allow-origin header for my app.

    I have my compose file configured like so, with localhost:3000 being the app:

    image

    I also examined the autosave.json file in the container and it's definitely picking up on my allowed origins:

    image

    Any help would be appreciated, thanks!

  • Possible to only cache specific fields?

    Possible to only cache specific fields?

    Hi again,

    I've been playing around with this for a little bit now and it's really promising. I want to try to put it in production, but I have a very large app with several fields and I want to take it slow. Specifically, I wanna start by caching only certain fields that I know need caching at this time, instead of my entire graph, and slowly test adding more and more. Is this possible currently?

  • Bug query result cache key is redundant

    Bug query result cache key is redundant

    Currently, when using multi varies, query result cache key will be redundant on the same query because loop on the map not guaranteed key position for each request. https://github.com/gbox-proxy/gbox/blob/998a7f26cecdf511f51dd8fd02e7d245db79b705/caching_plan.go#L245-L274

GraphJin - Build APIs in 5 minutes with GraphQL. An instant GraphQL to SQL compiler.
GraphJin - Build APIs in 5 minutes with GraphQL. An instant GraphQL to SQL compiler.

GraphJin - Build APIs in 5 minutes GraphJin gives you a high performance GraphQL API without you having to write any code. GraphQL is automagically co

Jan 1, 2023
GraphQL server with a focus on ease of use
GraphQL server with a focus on ease of use

graphql-go The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages. Wh

Dec 31, 2022
GraphQL server with a focus on ease of use
GraphQL server with a focus on ease of use

graphql-go The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages. Wh

Dec 25, 2022
GQLEngine is the best productive solution for implementing a GraphQL server 🚀

GQLEngine is the best productive solution for implementing a graphql server for highest formance examples starwars: https://github.com/gqlengine/starw

Apr 24, 2022
go generate based graphql server library
go generate based graphql server library

gqlgen What is gqlgen? gqlgen is a Go library for building GraphQL servers without any fuss. gqlgen is based on a Schema first approach — You get to D

Dec 31, 2022
Go monolith with embedded microservices including GRPC,REST,GraphQL and The Clean Architecture.
Go monolith with embedded microservices including GRPC,REST,GraphQL and The Clean Architecture.

GoArcc - Go monolith with embedded microservices including GRPC,REST, graphQL and The Clean Architecture. Description When you start writing a Go proj

Dec 21, 2022
A simple Go, GraphQL, and PostgreSQL starter template

Simple Go/GraphQL/PostgreSQL template Purpose Have a good starting point for any project that needs a graphql, go, and postgres backend. It's a very l

Jan 8, 2022
A GraphQL complete example using Golang And PostgreSQL

GraphQL with Golang A GraphQL complete example using Golang & PostgreSQL Installation Install the dependencies go get github.com/graphql-go/graphql go

Dec 6, 2022
A collection of Go packages for creating robust GraphQL APIs

api-fu api-fu (noun) (informal) Mastery of APIs. ?? Packages The top level apifu package is an opinionated library that aims to make it as easy as pos

Dec 28, 2022
graphql parser + utilities

graphql utilities for dealing with GraphQL queries in Go. This package focuses on actually creating GraphQL servers and expects you to describe your s

Dec 20, 2022