GraphQL Ecosystem

About me! ๐Ÿค“

ย 

  • Write code! - mostly for fun ๐Ÿ˜ƒ
  • Love to play Football โšฝ
  • Working with Prisma (prisma.io) on OSS ๐Ÿ˜ผ
  • Twitter (and across internet): @divyenduz ๐Ÿฆ

Aim ๐ŸŽณ

  • Cover width and not depth of the GraphQL stack ๐Ÿ•ต๏ธโ€โ™‚๏ธ
  • Save you tons of research time โŒš
  • Challenges
    • Engineering ๐Ÿ‘ฉโ€๐Ÿ’ป
    • Human ๐Ÿ’Œ
  • Help you get started on OSS โค๏ธ
    • This is an ongoing discussion
      Find me @divyenduz on ๐Ÿฆ - DM are open!

GraphQL

  • Single Endpoint for all data โ˜๏ธ
  • Contract between client and server ๐Ÿ—’๏ธ
    • Static analysis/optimization/safety
    • Decoupled client/server
  • SDL

GraphQL

Origin ๐Ÿ”ฐ

  • Mobile development at Facebookย 
  • Open sourced in 2015 (started in 2012)
    • Language agnostic
    • Transport agnostic
    • What was open sourced?

Reference Implementation in JS

Spec

The Ecosystem โš™๏ธ

  • graphql-import
  • graphql-config
  • graphql-cli
  • graphql-tools
  • graphql-binding
  • VSCode GraphQL
  • ----------------------------------------
  • Clients
    • graphql-request/Apollo/urql/relay
  • Servers
    • graphql-yoga/apollo-server
  • More
    • Playground

graphql-import

  • SDL does not have an import system
  • Good: Intelligent auto-import
  • Bad: The comment syntax
  • Challenges:
    • Upcoming features
    • Collisions
    • Cyclic imports

https://github.com/prismagraphql/graphql-import

graphql-config

  • Language agnostic configuration
  • Good: Supported by a lot of tools in Ecosystem
  • Bad: Too many variations (opinion)
  • Challenges:
    • Adoption
    • Simplification

https://github.com/prismagraphql/graphql-config

graphql-cli

  • Common development workflows
  • Good: Awesome getting started experience
    • graphql create, get-schema, lint etc
    • graphql codegen: code generation
    • graphql-config
    • Language agnostic
  • Bad*: Open issues that need love ๐ŸคŸ
  • Challenges:
    • Powerful plugin system

https://github.com/graphql-cli/graphql-cli

graphql-tools

  • Powerful yet easy abstraction over graphql-js ๐Ÿ‘
  • Good: Schema stitching ๐Ÿ‘š
    • Architectures*
    • Delegation
    • graphql-binding
  • Bad: Only exists in JS 1๏ธโƒฃ
  • Challenges:
    • Implementation in other languages

https://github.com/apollographql/graphql-tools

graphql-binding

  • Auto-generated SDK for your GraphQL API ๐Ÿš˜
  • Supports schema stitching & codegen
  • Good: Amazing developer experience, type safety
  • Bad: Only exists in JS 1๏ธโƒฃ
  • Challenges:
    • Abstraction overhead
  • Resources: https://w3z.in/42f3a

https://github.com/graphql-binding/graphql-binding

VSCode GraphQL

  • Language service protocol โค๏ธ
  • Auto-completion, highlighting, lint ๐Ÿ‘ฉโ€๐Ÿ’ป
  • Integrated development experience ๐Ÿคฏ
  • Good: Reduced context switch ๐Ÿ‘
  • Bad: Edge cases need some love ๐Ÿ”ช
  • Challenges:
    • Client queries mapping
  • Upcoming:
    • Execute GraphQL operations โฉ

https://github.com/prismagraphql/vscode-graphql

Important Note about OSS

  • Humans ๐Ÿคนโ€โ™‚๏ธ
  • Empathy ๐Ÿค—
  • Help/join ๐Ÿ™Œ

Questions? ๐Ÿค”

Feedback ๐Ÿ™

https://www.divyendusingh.com

Thank you ๐Ÿ™Œ