GraphQL - Diving Deep

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • Scout APM - Less time debugging, more time building
  • OPS - Build and Run Open Source Unikernels
  • GitHub repo graphql-spec

    GraphQL is a query language and execution engine tied to any backend service.

    Contribute to the GraphQL spec with your suggestions (Some suggestions may take years to implement even if it is good, so you may need to have a lot of patience for this)

  • GitHub repo graphql-landscape

    🌄Landscape for the GraphQL ecosystem

    And today, there is a GraphQL foundation which tries to ensure that GraphQL and the ecosystem thrives over time, a huge landscape of projects, a huge set of tools like this and this and these can just be few of the examples on how big the ecosystem has grown with a lot of languages, frameworks, tools supporting it as a first class citizen, so much so that even some of the huge enterprises are using it today as part of their stack.

  • SonarLint

    Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.

  • GitHub repo awesome-graphql

    Awesome list of GraphQL

    And today, there is a GraphQL foundation which tries to ensure that GraphQL and the ecosystem thrives over time, a huge landscape of projects, a huge set of tools like this and this and these can just be few of the examples on how big the ecosystem has grown with a lot of languages, frameworks, tools supporting it as a first class citizen, so much so that even some of the huge enterprises are using it today as part of their stack.

  • GitHub repo graphql-js

    A reference implementation of GraphQL for JavaScript

    One thing to understand is that, if you are using Node.js graphql-js would typically be the underlying implementation of all libraries and ultimately everything would get converted to JS/TS objects typically an AST ultimately making all these as abstractions on top of the existing way to define schemas. Note that the implementation can differ a bit in other languages or even within Node.js if you are using other ways of implementation like graphql-jit

  • GitHub repo TypeScript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    If you are working with Typescript it would be better to have codegen setup as part of your workflow.

  • GitHub repo graphql-jit

    GraphQL execution using a JIT compiler

    One thing to understand is that, if you are using Node.js graphql-js would typically be the underlying implementation of all libraries and ultimately everything would get converted to JS/TS objects typically an AST ultimately making all these as abstractions on top of the existing way to define schemas. Note that the implementation can differ a bit in other languages or even within Node.js if you are using other ways of implementation like graphql-jit

  • GitHub repo prisma1

    💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB)

    Or you want to have a single ORM which closely resembles GraphQL like Prisma to integrate with multiple databases underneath

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • GitHub repo express-graphql

    Create a GraphQL HTTP server with Express.

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • GitHub repo postman-app-support

    Postman helps you be more efficient while working with APIs. Using Postman, you can construct complex HTTP requests quickly, organize them in collections and share them with your co-workers.

    Want to use a tool to test GraphQL endpoints? You might need something like Insomnia, Postman, Hoppscotch or VSCode REST Client

  • GitHub repo apollo-server

    🌍  Spec-compliant and production ready JavaScript GraphQL server that lets you develop in a schema-first way. Built for Express, Connect, Hapi, Koa, and more.

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • GitHub repo jaeger

    CNCF Jaeger, a Distributed Tracing Platform

    If you want to do this on your own, you can send traces or contexts from within the resolvers using the Jaeger/Opentelemetry SDKs and send all the information manually for tracing.

  • GitHub repo graphql-tools

    :wrench: Build, mock, and stitch a GraphQL schema using the schema language

    Yes. GraphQL Tools (which was initially from Apollo and then taken over by the Guild) is one of those libraries which I highly recommend. You can do a lot of operations on your SDL or schema like merging multiple schemas, mocking your schemas with test data, building custom directives, loading remote schemas and so on which you can add as part of your stack.

  • GitHub repo mercurius

    Implement GraphQL servers and gateways with Fastify

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • GitHub repo Gatsby

    Build blazing fast, modern apps and websites with React

    One of the great examples of real-world implementation of this would be Gatsby where irrespective of the source of data, everything ultimately gets converted to GraphQL with plugins which can then be used in your workflow.

  • GitHub repo graphql-helix

    A highly evolved GraphQL HTTP Server 🧬

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • GitHub repo Express

    Fast, unopinionated, minimalist web framework for node.

    Do you use express as your framework? Use express-graphql

  • GitHub repo node-graphql-benchmarks

    Benchmarks for different Node.js GraphQL Servers

    And infact, if you are keen on understanding how every graphql-server performs, I would recommend checking out this

  • GitHub repo fast

    The adaptive interface system for modern web experiences.

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • GitHub repo apollo-ios

    📱  A strongly-typed, caching GraphQL client for iOS, written in Swift.

    Apollo Client does have a good integration with these frameworks including React, iOS and Android — so, you might want to check that out

  • GitHub repo graphql-typed-document-node

    An improved version of `DocumentNode` for seamless TypeScript integration for GraphQL.

    Want to generate Typescript objects based on GQL documents? You can try out Typed Document Node

  • GitHub repo graphql-inspector

    🕵️‍♀️ Validate schema, get schema change notifications, validate operations, find breaking changes, look for similar types, schema coverage

    If you want to validate your schema as and when you push to Version control to maintain sanity, setup something like GraphQL Inspector locally and in your CI/CD pipelines to maintain your sanity. If you use the Apollo ecosystem, it comes inbuilt in the Apollo Studio or the CLI tools which it gives you.

  • GitHub repo apollo-android

    :robot:  A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.

    Apollo Client does have a good integration with these frameworks including React, iOS and Android — so, you might want to check that out

  • GitHub repo graphql-eslint

    ESLint parser, plugin and set rules for GraphQL (for schema and operations). Easily customizable with custom rules. Integrates with IDEs and modern GraphQL tools.

    Want to have ESLint support to enforce standards and maintain sanity across your team, try something like GraphQL ESLint and set it up with your preferred conventions.

  • GitHub repo apollo-elements

    🚀🌛 Use the Launch Platform 👩‍🚀👨‍🚀

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • GitHub repo gluonjs

    A lightweight Web Component base

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • GitHub repo TypeGraphQL

    Create GraphQL schema and resolvers with TypeScript, using classes and decorators!

    Or do you want to directly code the schema in Typescript and maintain strict types? Try Typegraphql

  • GitHub repo graphql-request

    Minimal GraphQL client supporting Node and browsers for scripts or simple apps

    Or if you are looking for a minimal client which runs both in the Browser and Node, you can try GraphQL Request

  • GitHub repo react-relay

    Relay is a JavaScript framework for building data-driven React applications.

    Using React? Relay can be a great choice

  • GitHub repo opentelemetry-specification

    Specifications for OpenTelemetry

    If you want to do this on your own, you can send traces or contexts from within the resolvers using the Jaeger/Opentelemetry SDKs and send all the information manually for tracing.

  • GitHub repo Neo4j

    Graphs for Everyone

    Neo4j has a GraphQL adapter

  • GitHub repo dataloader

    DataLoader is a generic utility to be used as part of your application's data fetching layer to provide a consistent API over various backends and reduce requests to those backends via batching and caching.

    While GraphQL is really promising and helpful, you have to understand that like any technology or framework, it does come with its own set of problems, most of which have already been addressed. For instance you might have heard about the N+1 problem, lack of caching, Query cost and complexity and so on and these have been addressed by some projects like the Dataloader, Persisted Queries, Caching and more which you can setup depending on your needs.

  • GitHub repo lit-element

    LEGACY REPO. This repository is for maintenance of the legacy LitElement library. The LitElement base class is now part of the Lit library, which is developed in the lit monorepo.

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • Gitlab GraphQL Explorer

  • GitHub repo graphql-apis

    📜 A collective list of public GraphQL APIs

    You can have a look at more like these here and play around with it.

  • GitHub repo graphql-shield

    🛡 A GraphQL tool to ease the creation of permission layer.

    You can also use libraries like GraphQL Shield which offers powerful middlewares to do this. But remember that authorization does come with attached cost since you are running a specific logic in/before your resolvers for all the fields which you want to authorize.

  • GitHub repo opentelemetry-js-contrib

    OpenTelemetry instrumentation for JavaScript modules

    Opentelemetry has recently made support for GraphQL available. You can find it here

  • GitHub repo graphql-cost-analysis

    A Graphql query cost analyzer.

    Another way is to use custom cost directives as in this package manually specifying the complexity and cost and using that to bill your APIs

  • GitHub repo frank_jwt

    JSON Web Token implementation in Rust.

    While the GraphQL spec itself does not recommend any specific way to do this and leaves it to the person implementing it, you can either use JWT, Cookies, Sessions and so on like you normally would when authenticating through other mechanisms.

  • GitHub repo insomnia

    The open-source, cross-platform API client for GraphQL, REST, and gRPC.

    Want to use a tool to test GraphQL endpoints? You might need something like Insomnia, Postman, Hoppscotch or VSCode REST Client

  • GitHub repo Postwoman

    👽 Open source API development ecosystem - https://hoppscotch.io

    Want to use a tool to test GraphQL endpoints? You might need something like Insomnia, Postman, Hoppscotch or VSCode REST Client

  • GitHub repo Hasura

    Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.

    Hasura provides a GraphQL abstraction on top of your datasources

  • GitHub repo gRPC

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

    In summary, all of them are different. HTTP is a protocol by itself and does not define about the structure of the data transmitted via HTTP itself (The latest version is http 3) , GRPC uses protocol buffers to sends packets using http 2 as the protocol (and in the future can extend to use http 3 as well) and is often used for inter-service communications and GraphQL has nothing to do with the transport layer at all. It is just a specification for structuring and transmitting data to and fro different locations and it does not even matter even if you compress, encrypt or do anything with the queries and mutations as long as you have a logic to decompress or decrypt them on the server side. So, in summary they serve different purposes.

  • GitHub repo graphql-code-generator

    A tool for generating code based on a GraphQL schema and GraphQL operations (query/mutation/subscription), with flexible support for custom plugins.

    For instance, there are some amazing projects from The Guild like GraphQL Codegen which we can use for generating types based on our local/remote schema with great Typescript integration, and you have a lot of plugins/recepies you can use along with it as well.

  • GitHub repo dgraph

    Native GraphQL Database with graph backend

    Dgraph has a native GraphQL implementation

  • GitHub repo Visual Studio Code

    Visual Studio Code

    If you are using VSCode and are looking to enable syntax highlighting, validation, autocomplete, code-completion and so on, you can try using either VSCode GraphQL or Apollo GraphQL depending on which suits you better.

  • GitHub repo graphql-voyager

    🛰️ Represent any GraphQL API as an interactive graph

    Introspection is typically used by the tooling to understand your GraphQL types and schema. For instance, tools like GraphQL Voyager can introspect your schema and build amazing graphs, and almost all extensions built around GraphQL leverage this power to understand your schema, types and everything around it.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts