Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Novvum/36-graphql-concepts

πŸ“œ 36 concepts every GraphQL developer should know.
https://github.com/Novvum/36-graphql-concepts

List: 36-graphql-concepts

awesome-list concepts graphql graphql-api graphql-client graphql-schema graphql-server graphql-subscriptions graphql-tools

Last synced: 3 months ago
JSON representation

πŸ“œ 36 concepts every GraphQL developer should know.

Awesome Lists containing this project

README

        









36 Concepts Every GraphQL Developer Should Know



## Introduction

This repository was created with the intention of helping developers master their concepts in GraphQL. It is not a requirement, but a guide for future studies.

Credit to [@leonardomso's](https://github.com/leonardomso) [33 JS Concepts Project](https://github.com/leonardomso/33-js-concepts) for the inspiration.

Thanks to [@kelseyyim](https://github.com/kelseyyim) for getting this started!

## Community

Feel free to submit a PR adding a link to your own recaps or reviews. If you want to translate the repo into your native language, please feel free to do so.

All the translations for this repo will be listed below:

---

## Table of Contents
### Specs
1. **[Queries](#1-queries)**
2. **[Mutations](#2-mutations)**
3. **[Subscriptions](#3-subscriptions)**
4. **[Types](#4-types)**
5. **[Fields](#5-fields)**
6. **[Root Field](#6-root-field)**
7. **[Relationships](#7-relationships)**
8. **[Introspection](#8-introspection)**
9. **[Arguments](#9-arguments)**
10. **[Union Types](#10-union-types)**
11. **[Interface Types](#11-interface-types)**
12. **[Directives](#12-directives)**
13. **[Type Extensions](#13-type-extension)**
14. **[Relay Specification](#14-relay-specification)**
15. **[Schema Definition Language](#15-schema-definition-language---sdl)**
16. **[GraphQLSchema Object](#16-graphqlschema-object)**

### Server
17. **[Setting up a server](#17-setting-up-a-server)**
18. **[Schema](#18-schema)**
19. **[Resolvers](#19-resolvers)**
20. **[Context](#20-context)**
21. **[Info Object](#21-info-object)**
22. **[Databases](#22-databases)**
23. **[Dataloader](#23-dataloader)**
24. **[Entry Points](#24-entry-points)**
25. **[Schema Stitching](#25-schema-stitching)**
26. **[SDL First](#26-sdl-first)**
27. **[Code First](#27-code-first)**
28. **[Middleware](#28-middleware)**

### Client
29. **[Fetching](#29-fetching)**
30. **[Fragments](#30-fragments)**
31. **[Variables](#31-variables)**
32. **[Alias](#32-alias)**
33. **[Polling](#33-polling)**
34. **[Cache](#34-cache)**

### Best Practices
35. **[Schema Design](#35-schema-design)**
36. **[Pagination](#36-pagination)**
37. **[Logging](#37-logging)**

---
# Specs

## 1. Queries

### Articles

* πŸ“œ [Queries and Mutations - Graphql.org](https://graphql.org/learn/queries/)
* πŸ“œ [The Anatomy of a Graphql Query β€” Sashko Stubailo](https://blog.apollographql.com/the-anatomy-of-a-graphql-query-6dffa9e9e747)
* πŸ“œ [Front End Queries Made Easy - Rasheed Bustamam](https://medium.freecodecamp.org/graphql-front-end-queries-made-easy-68e9d9ded283)
* πŸ“œ [An Introduction to Graphql Queries - Alligator.io](https://alligator.io/graphql/introduction-graphql-queries/)
* πŸ“œ [Examples for GraphQL-Queries and Mutations - predict8](https://www.predic8.de/graphql-query-samples.htm)


### Videos

* πŸŽ₯ [GraphQL Tutorial #4 - Making Queries - The Net Ninja](https://www.youtube.com/watch?v=bX2e4FILf78)
* πŸŽ₯ [Writing GraphQL Queries - Live Coding with Jesse](https://www.youtube.com/watch?v=k-pj9d0cC-0)

**[⬆ Back to Top](#table-of-contents)**

## 2. Mutations

### Articles

* πŸ“œ [Mutations in GraphQL - Alexander Kondov](https://hackernoon.com/mutations-in-graphql-9ac6a28202a2)
* πŸ“œ [Mutations - GraphQL.org](https://graphql.org/learn/queries/#mutations)
* πŸ“œ [Organizing GraphQL Mutations - Jeff Lowery](https://medium.freecodecamp.org/organizing-graphql-mutations-653306699f3d)
* πŸ“œ [GraphQL mutations: Partial updates implementation - Arnaud BezanΓ§on](https://medium.com/workflowgen/graphql-mutations-partial-updates-implementation-bff586bda989)
* πŸ“œ [Modeling GraphQL Mutations - Oleg Ilyenko](https://techblog.commercetools.com/modeling-graphql-mutations-52d4369f73b1)
* πŸ“œ [GraphQL Mutation Design: Anemic Mutations - Marc-AndrΓ© Giroux](https://medium.com/@__xuorig__/graphql-mutation-design-anemic-mutations-dd107ba70496)
* πŸ“œ [Understanding GraphQL Mutations - Moon Highway](https://moonhighway.com/understanding-graphql-mutations?utm_source=dormosheio&utm_campaign=dormosheio)



### Videos

* πŸŽ₯ [GraphQL Tutorial #18 - Mutations - The Net Ninja](https://www.youtube.com/watch?v=DU77lbBPfBI)
* πŸŽ₯ [GraphQL Tutorial #19 - More on Mutations - The Net Ninja](https://www.youtube.com/watch?v=H8oRezNak2s)
* πŸŽ₯ [Learn Apollo - Basic Mutations - Prisma](https://www.youtube.com/watch?v=ZXvBmA-hKwc)

**[⬆ Back to Top](#table-of-contents)**

## 3. Subscriptions

### Articles

* πŸ“œ [Subscriptions in Graphql and Relay - Dan Schafer](https://graphql.org/blog/subscriptions-in-graphql-and-relay/)
* πŸ“œ [From Zero to Graphql Subscriptions - Robert Zhu](https://hackernoon.com/from-zero-to-graphql-subscriptions-416b9e0284f3)
* πŸ“œ [Make web real-time with GraphQL subscriptions - David Qorashi](https://medium.com/@hpux/make-web-real-time-with-graphql-subscriptions-5a59ac1b010c)
* πŸ“œ [Realtime GraphQL Subscriptions - How to Graphql](https://www.howtographql.com/graphql-js/7-subscriptions/)
* πŸ“œ [A Guide to Subscriptions in GraphQL with Apollo -Brenda Jimenez](https://www.levvel.io/our-ideas/A-Guide-to-Subscriptions-in-GraphQL-with-Apollo)

### Videos

* πŸŽ₯ [What is a Graphql Subscription - Ben Awad](https://www.youtube.com/watch?v=Tp8UPgmhyTs)
* πŸŽ₯ [Introducing GraphQL Subscriptions - Lee Byron](https://www.youtube.com/watch?v=bn8qsi8jVew)
* πŸŽ₯ [How to build a Realtime Chat with GraphQL Subscriptions and Apollo - Prisma](https://www.youtube.com/watch?v=aSLF9f13o2c)
* πŸŽ₯ [How to setup GraphQL Subscriptions Nodejs - Ben Awad](https://www.youtube.com/watch?v=XmNmiBfk6M4)
* πŸŽ₯ [How to add Authentication to your GraphQL Subscriptions - Ben Awad](https://www.youtube.com/watch?v=EuaVr7vFF5E)

**[⬆ Back to Top](#table-of-contents)**

## 4. Types

### Articles

* πŸ“œ [Constructing Types β€” Graphql.org](https://graphql.org/graphql-js/constructing-types/)
* πŸ“œ [Schema types - Apollo](https://www.apollographql.com/docs/apollo-server/schemas/types.html)
* πŸ“œ [Object Types β€” Graphql.org](https://graphql.org/graphql-js/object-types/)


### Videos
* πŸŽ₯ [Author Types β€” The Net Ninja](https://www.youtube.com/watch?v=Pe1MgqWFyYE&t=2s)
* πŸŽ₯ [Extending Schema Types - Full-stack GraphQL with Apollo, Meteor & React - LevelUpTuts](https://www.youtube.com/watch?v=A7NvopS75dI)

**[⬆ Back to Top](#table-of-contents)**

## 5. Fields

### Articles

* πŸ“œ [Fields β€” Graphql.org](https://graphql.org/learn/queries/#fields)
* πŸ“œ [Object Types & Fields β€” Graphql.org](https://graphql.org/learn/schema/#object-types-and-fields)

**[⬆ Back to Top](#table-of-contents)**

## 6. Root Field

### Articles

* πŸ“œ [Root Fields & Resolvers - Graphql.org](https://graphql.org/learn/execution/)

### Videos

* πŸŽ₯ [GraphQL Tutorial, Root Query β€” The Net Ninja](https://www.youtube.com/watch?v=ALqNbTik44o)

**[⬆ Back to Top](#table-of-contents)**

## 7. Relationships

### Articles

* πŸ“œ [Thinking in graphs - Graphql.Org](https://graphql.org/learn/thinking-in-graphs/)
* πŸ“œ [ A simple graphql example with relationships - Graphql Documentation](https://blog.tylerbuchea.com/a-simple-graphql-example-with-relationships/)

### Videos

* πŸŽ₯ [Type Relations - The Net Ninja](https://www.youtube.com/watch?v=-aQ_Io9m1GQ)

**[⬆ Back to Top](#table-of-contents)**

## 8. Introspection

### Articles

* πŸ“œ [GraphQL introspection and introspection queries - David MrΓ‘z](https://graphqlmastery.com/blog/graphql-introspection-and-introspection-queries)

**[⬆ Back to Top](#table-of-contents)**

## 9. Arguments

### Articles

* πŸ“œ [Fields and arguments - flaviocopes](https://flaviocopes.com/graphql/#fields-and-arguments)
* πŸ“œ [Passing Arguments - GraphQL.org](https://graphql.org/graphql-js/passing-arguments/)

### Videos

* πŸŽ₯ [Arguments - Novvum](https://twitter.com/novvumio/status/1113884737981100033)

**[⬆ Back to Top](#table-of-contents)**

## 10. Union Types

### Articles

* πŸ“œ [How to write add unions and interfaces to a schema - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/features/unions-interfaces.html)
* πŸ“œ [Graphql Tour Interfaces and Unions β€” Clay Allsopp](https://medium.com/the-graphqlhub/graphql-tour-interfaces-and-unions-7dd5be35de0d)
* πŸ“œ [Graphql Interfaces and Unions-How to design a Graphql Schema β€” David Mraz](https://graphqlmastery.com/blog/graphql-interfaces-and-unions-how-to-design-graphql-schema)
* πŸ“œ [Interfaces and Unions in GraphQL β€” AWS Documentation](https://docs.aws.amazon.com/appsync/latest/devguide/interfaces-and-unions.html)

**[⬆ Back to Top](#table-of-contents)**

## 11. Interface Types

### Articles

* πŸ“œ [Interface Type - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/features/unions-interfaces.html#Interface-type)

**[⬆ Back to Top](#table-of-contents)**

## 12. Directives

### Articles

* πŸ“œ [GraphQL Directives - Abhi Aiyer](https://medium.com/open-graphql/graphql-directives-3dec6106c384)
* πŸ“œ [Use custom directives to protect your GraphQL APIs - David He](https://codeburst.io/use-custom-directives-to-protect-your-graphql-apis-a78cbbe17355)
* πŸ“œ [An introduction to GraphQL: Directives - Flavioscopes](https://flaviocopes.com/graphql/#graphql-directives)
* πŸ“œ [The Power of GraphQL Directives - Łukasz Czyszczonik](https://blog.callstack.io/the-power-of-graphql-directives-81f4987fd76d)
* πŸ“œ [Schema Directives - Apollo](https://www.apollographql.com/docs/graphql-tools/schema-directives.html)
* πŸ“œ [SDL Directives - GraphQLJava](https://www.graphql-java.com/documentation/v11/sdl-directives/)


### Videos

* πŸŽ₯ [Query Directives - Novvum](https://twitter.com/novvumio/status/1111710417506783237)
* πŸŽ₯ [Directives in GraphQL - FullStackHour](https://www.youtube.com/watch?v=HUKKNL2socs)

**[⬆ Back to Top](#table-of-contents)**

## 13. Type Extension

### Articles

* πŸ“œ [Type Extension - Facebook](https://facebook.github.io/graphql/draft/#TypeExtension)
* πŸ“œ [Modularizing your GraphQL Schema Code: Extending types in multiple files - Apollo](https://blog.apollographql.com/d7f71d5ed5f2#14ac)
* πŸ“œ [Schema Extension - Facebook](https://facebook.github.io/graphql/June2018/#sec-Schema-Extension)
* πŸ“œ [The ultimate guide to schema stitching in GraphQL: Schema Extension - Rishichandra Wawhal](https://blog.hasura.io/the-ultimate-guide-to-schema-stitching-in-graphql-f30178ac0072/)

### Videos

* πŸŽ₯ [Extending Schema Types: Full-stack GraphQL with Apollo, Meteor & React - LevelUpTuts](https://www.youtube.com/watch?v=A7NvopS75dI)

**[⬆ Back to Top](#table-of-contents)**

## 14. Relay Specification

### Articles

* πŸ“œ [GraphQL Server Specification - Facebook](https://facebook.github.io/relay/docs/en/graphql-server-specification.html)
* πŸ“œ [Implementing the Relay spec in a GraphQL Server - Marc-Andre Giroux](http://mgiroux.me/2016/implementing-the-relay-spec-for-a-graphql-server/)
* πŸ“œ [Relay/GraphqL: De-mystifying Node ID - Soon Hin Khor](https://medium.com/code-oil/relay-graphql-de-mystifying-node-id-38757121b9c)

**[⬆ Back to Top](#table-of-contents)**

## 15. Schema Definition Language - SDL

### Articles

* πŸ“œ [Defining Graph Database Schemas by using the GraphQL Schema Definition Language - Olaf Hartig](http://blog.liu.se/olafhartig/documents/graphql-schemas-for-property-graphs/)
* πŸ“œ [GraphQL SDL, Schema Definition Language - Prisma Documentation](https://www.prisma.io/blog/graphql-sdl-schema-definition-language-6755bcb9ce51)
* πŸ“œ [Three ways to represent your GraphQL schema - Sashko Stubailo](https://blog.apollographql.com/three-ways-to-represent-your-graphql-schema-a41f4175100d)
* πŸ“œ [A GraphQL SDL Reference - Alligator](https://alligator.io/graphql/graphql-sdl/)

**[⬆ Back to Top](#table-of-contents)**

## 16. GraphQLSchema object

### Articles

* πŸ“œ [GraphQL.js GraphQLSchema object - Sashko Stubailo](https://blog.apollographql.com/three-ways-to-represent-your-graphql-schema-a41f4175100d)

**[⬆ Back to Top](#table-of-contents)**

---

# Server

## 17. Setting Up a Server

### Articles

* πŸ“œ [Building a server with Apollo - Apollo GraphQL](https://www.apollographql.com/docs/apollo-server/essentials/server.html)
* πŸ“œ [Your First GraphQL Server β€” Clay Allsopp](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2)
* πŸ“œ [Learn to build a GraphQL server with minimal effort β€” Ian Wilson](https://medium.freecodecamp.org/learn-to-build-a-graphql-server-with-minimal-effort-fc7fcabe8ebd)
* πŸ“œ [Building a GraphQL Server with Node.js β€” Angus Croll](https://itnext.io/building-a-graphql-server-with-node-js-and-express-f8ea78e831f9)
* πŸ“œ [There and Back Again, A GraphQL Lifecycle Tale β€” Annie Lydens and Thomas Paresi](https://thoughtbot.com/blog/graphql-for-busy-people)

### Videos

* πŸŽ₯ [Single GraphQL Server with Multiple Endpoints and Databases β€” Ben Awad](https://www.youtube.com/watch?v=glsK0PBMjJs)
* πŸŽ₯ [Building a GraphQL Server [Part 1] β€” Traversy Media](https://www.youtube.com/watch?v=PEcJxkylcRM)
* πŸŽ₯ [Building a GraphQL Server with TypeScript](https://www.youtube.com/watch?v=20zGexpEitc)
* πŸŽ₯ [Learn how to build an API using GraphQL with Apollo Server 2.0 β€” Fireship](https://www.youtube.com/watch?v=8D9XnnjFGMs)
* πŸŽ₯ [Building Modern APIs with GraphQL - Robert Zhu](https://www.youtube.com/watch?v=bRnu7xvU1_Y)
* πŸŽ₯ [GraphQL server tutorial for Node.js with SQL, MongoDB and REST β€” Apollo GraphQL](https://www.youtube.com/watch?v=PHabPhgRUuU)

**[⬆ Back to Top](#table-of-contents)**

## 18. Schema

### Articles

* πŸ“œ [Understanding schema concepts - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/essentials/schema.html)
* πŸ“œ [Graphql Server Basics: Schemas Explained - Prisma Documentation](https://www.prisma.io/blog/graphql-server-basics-the-schema-ac5e2950214e)
* πŸ“œ [GraphQL Schema Language Cheat Sheet - Hafiz Ismail](https://wehavefaces.net/graphql-shorthand-notation-cheatsheet-17cd715861b6)
* πŸ“œ [GraphQL Server Basics: GraphQL Schemas, TypeDefs & Resolvers Explained - Prisma](https://www.prisma.io/blog/graphql-server-basics-the-schema-ac5e2950214e)

### Videos

* πŸŽ₯ [GraphQL Schema - The Net Ninja](https://www.youtube.com/watch?v=A8vtRvz-lK0)

**[⬆ Back to Top](#table-of-contents)**

## 19. Resolvers

### Articles

* πŸ“œ [GraphQL Resolvers: Best Practices - Mark Stuart](https://medium.com/paypal-engineering/graphql-resolvers-best-practices-cd36fdbcef55)
* πŸ“œ [Overview of Resolvers - Graphcool Documentation](https://www.graph.cool/docs/reference/functions/resolvers-su6wu3yoo2)
* πŸ“œ [GraphQL Server Basics: GraphQL Schemas, TypeDefs & Resolvers Explained - Prisma](https://www.prisma.io/blog/graphql-server-basics-the-schema-ac5e2950214e)

### Videos

* πŸŽ₯ [GraphQL Tutorial #9, The Resolve Function - The Net Ninja](https://www.youtube.com/watch?v=NWod5SFW13s)

**[⬆ Back to Top](#table-of-contents)**

## 20. Context

### Articles

* πŸ“œ [GraphQL Context and Services - Eric Clemmons](https://medium.com/@ericclemmons/graphql-context-services-6510269ef5a1)
* πŸ“œ [Learning about Execution and Context - GraphQL](https://graphql.org/learn/execution/)
* πŸ“œ [How does one set up database or other context in a graphql resolver - StackOverflow](https://stackoverflow.com/questions/44220597/how-does-one-set-up-database-or-other-context-in-a-graphql-resolver)

**[⬆ Back to Top](#table-of-contents)**

## 21. Info Object

### Articles

* πŸ“œ [GraphQL Server Basics: Demystifying the info Argument in GraphQL Resolvers](https://www.prisma.io/blog/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a/)

**[⬆ Back to Top](#table-of-contents)**

## 22. Databases

### Articles

* πŸ“œ [Selecting database as data source for GraphQL Server β€” Wojciech Trocki](https://medium.com/@wtr/selecting-database-as-data-source-for-graphql-server-e3281fcefb2)
* πŸ“œ [Connecting Server and Database with the Prisma Client β€” Prisma](https://www.howtographql.com/graphql-js/5-connecting-server-and-database/)
* πŸ“œ [Using a GraphQL API for Database Administration β€” Michael Hunger](https://medium.freecodecamp.org/using-a-graphql-api-for-database-administration-1a5039b43c8f)
* πŸ“œ [GraphQL as a database query language - Predrag Gruevski](https://blog.kensho.com/compiled-graphql-as-a-database-query-language-72e106844282)
* πŸ“œ [Use all the databases β€” Loren Sands-Ramshaw](https://www.compose.com/articles/use-all-the-databases-part-1/)
* πŸ“œ [GraphQL for databases: A layer for universal database access β€” George Anadiotis](https://www.zdnet.com/article/graphql-for-databases-a-layer-for-universal-database-access/)

### Videos

* πŸŽ₯ [Build a GraphQL Server with Node.js and MongoDB - Ben Awad](https://www.youtube.com/watch?v=291i04TfGb0)
* πŸŽ₯ [Build a GraphQL server for Node.js, using PostgreSQL/MySQL - Lee Benson](https://www.youtube.com/watch?v=DNPVqK_woRQ&t=3s)

**[⬆ Back to Top](#table-of-contents)**

## 23. Dataloader

### Articles

* πŸ“œ [Using dataloader with GraphQL: A Concrete Example β€” John Tucker](https://codeburst.io/using-dataloader-with-graphql-a-concrete-example-9b21352f1676)
* πŸ“œ [The GraphQL Dataloader Pattern: Visualized β€” Marc-AndrΓ© Giroux](https://medium.com/@__xuorig__/the-graphql-dataloader-pattern-visualized-3064a00f319f)

### Videos

* πŸŽ₯ [DataLoader – Source code walkthrough β€” Lee Byron](https://www.youtube.com/watch?v=OQTnXNCDywA&feature=youtu.be)
* πŸŽ₯ [DataLoader and the Problem it solves in GraphQL β€” knowthen](https://www.youtube.com/watch?v=ld2_AS4l19g)

**[⬆ Back to Top](#table-of-contents)**

## 24. Entry Points

### Articles

* πŸ“œ [API Reference: entry points β€” GraphQL](https://graphql.org/graphql-js/graphql/#entry-point)
* πŸ“œ [Adding a GraphQL endpoint - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/v1/setup.html)
* πŸ“œ [Running a scalable & reliable GraphQL endpoint with Serverless - Siddharth Gupta](https://serverless.com/blog/running-scalable-reliable-graphql-endpoint-with-serverless/)
* πŸ“œ [Serving over HTTP: Endpoints - Graphql.org](https://graphql.org/learn/serving-over-http/)

### Videos

* πŸŽ₯ [ContentaJS GraphQL 3 - The GraphQL entry points β€” Mateu](https://www.youtube.com/watch?v=7eLsfIZYuvU)

**[⬆ Back to Top](#table-of-contents)**

## 25. Schema Stitching

### Articles

* πŸ“œ [The ultimate guide to Schema Stitching in GraphQL - Rishichandra Wawhal](https://blog.hasura.io/the-ultimate-guide-to-schema-stitching-in-graphql-f30178ac0072/)
* πŸ“œ [GraphQL Stitching 101 - Artsy](http://artsy.github.io/blog/2018/12/11/GraphQL-Stitching/)
* πŸ“œ [Schema Stitching - Apollo Documentation](https://www.apollographql.com/docs/graphql-tools/schema-stitching.html)
* πŸ“œ [GraphQL Remote Schema Stitching in a Multi-Service Architecture - Suciu Vlad](https://medium.com/provablyfair/graphql-remote-schema-stitching-in-a-multi-service-architecture-ac329037f082)
* πŸ“œ [Apollo Federation - Apollo](https://blog.apollographql.com/apollo-federation-f260cf525d21)

### Videos

* πŸŽ₯ [API mashup: Combining APIs using GraphQL schema stitching - GitHub](https://www.youtube.com/watch?v=90JWZnuf7xQ)
* πŸŽ₯ [GraphQL Schema Stitching - Ben Awad](https://www.youtube.com/watch?v=4i3W6g_u1Nw)
* πŸŽ₯ [GraphQL Schema Stitching with Prisma and Contentful - Nikolas Burk(Contentful)](https://www.youtube.com/watch?v=w1loiyLD4eY)

**[⬆ Back to Top](#table-of-contents)**

## 26. SDL First

### Articles

* πŸ“œ [The Problems of "Schema-First" GraphQL Server Development - Prisma](https://www.prisma.io/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3)
* πŸ“œ [Schema-First GraphqL: The Road Less Travelled - Jakub Draganek](https://blog.mirumee.com/schema-first-graphql-the-road-less-travelled-cf0e50d5ccff)

### Videos

* πŸŽ₯ [Schema First Development - Prisma](https://www.youtube.com/watch?v=SdWI7XaAeeY)
* πŸŽ₯ [Schema-first vs. Code-first - Mirumee Labs](https://www.youtube.com/watch?v=Vmv0yC-7aKY)

**[⬆ Back to Top](#table-of-contents)**

## 27. Code First

### Articles

* πŸ“œ [Code-first - Hot Chocolate](https://hotchocolate.io/docs/code-first)
* πŸ“œ [Introducing GraphQL Nexus Code First GraphQL Server Development - Prisma](https://www.prisma.io/blog/introducing-graphql-nexus-code-first-graphql-server-development-ll6s1yy5cxl5/)
* πŸ“œ [The Problems of Schema-First GraphQL - Prisma](https://www.prisma.io/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3)

**[⬆ Back to Top](#table-of-contents)**

## 28. Middleware

### Articles

* πŸ“œ [GraphQL Middleware - Prisma](https://www.prisma.io/blog/graphql-middleware-zie3iphithxy)
* πŸ“œ [Authentification and express middleware - Graphql.org](https://graphql.org/graphql-js/authentication-and-express-middleware/)

### Videos

* πŸŽ₯ [GraphQL Middleware - Ben Awad](https://www.youtube.com/watch?v=0npsaFdrrFw)
* πŸŽ₯ [GraphQL Middleware in 6 minutes - Jamie Barton](https://www.youtube.com/watch?v=5ydCPvrWRmg)

**[⬆ Back to Top](#table-of-contents)**

---

# Client

## 29. Fetching

### Articles

* πŸ“œ [4 simple ways to call a GraphQL API - Sashko Stubailo](https://blog.apollographql.com/4-simple-ways-to-call-a-graphql-api-a6807bcdb355)

### Videos

* πŸŽ₯ [Fetching data from an API in GraphQL - Ben Awad](https://www.youtube.com/watch?v=RDQyAcvmbpM)
* πŸŽ₯ [Building a GraphQL Server, RootQuery & Fetching Data - Traversy Media](https://www.youtube.com/watch?v=e9Zxzr7sy60)

**[⬆ Back to Top](#table-of-contents)**

## 30. Fragments

### Articles

* πŸ“œ [Using fragments - Apollo](https://www.apollographql.com/docs/react/advanced/fragments.html)
* πŸ“œ [How to query your schema with GraphQL fragments - David MrΓ‘z](https://medium.com/graphql-mastery/graphql-fragments-and-how-to-use-them-8ee30b44f59e)
* πŸ“œ [GraphQL Fragments are the Best Match for UI Components - Samer Buna](https://www.manifold.co/blog/graphql-fragments-are-the-best-match-for-ui-components-72b8f61c20fe)

### Videos

* πŸŽ₯ [How GraphQL Fragments Work - Ben Awad](https://www.youtube.com/watch?v=AAHR7eBKLU8)

**[⬆ Back to Top](#table-of-contents)**

## 31. Variables

### Articles

* πŸ“œ [GraphQL Tour: Variables - Clay Allsop](https://medium.com/the-graphqlhub/graphql-tour-variables-58c6abd10f56)
* πŸ“œ [Introduction to GraphQL: GraphQL Variables - Flavioscopes](https://flaviocopes.com/graphql/#graphql-variables)


### Videos

* πŸŽ₯ [GraphQL Tips: Query Variables - Novvum](https://twitter.com/novvumio/status/1106283961892962305)
* πŸŽ₯ [GraphQL Tutorial #32: Query Variables - The Net Ninja](https://www.youtube.com/watch?v=Rvx1HLMK1-U)
* πŸŽ₯ [GraphQL Tips: Default Values for Variables - Novvum](https://twitter.com/novvumio/status/1108821324363763712)

**[⬆ Back to Top](#table-of-contents)**

## 32. Alias

### Articles

* πŸ“œ [An Introduction to GraphQL: Aliases - GraphQL Mastery](https://flaviocopes.com/graphql/#aliases)
* πŸ“œ [How to use GraphQL aliases - GraphQL Mastery](https://medium.com/graphql-mastery/graphql-quick-tip-aliases-567303a9ddc5)
* πŸ“œ [More GraphQL Concepts: Aliases - HowtoGraphQL](https://www.howtographql.com/advanced/2-more-graphql-concepts/)

### Videos

* πŸŽ₯ [GraphQL Tips: Aliases - Novvum](https://twitter.com/novvumio/status/1116423304045264897)

**[⬆ Back to Top](#table-of-contents)**

## 33. Polling

### Articles

* πŸ“œ [Dynamic GraphQL polling with React and Apollo Client - David Glasser](https://blog.apollographql.com/dynamic-graphql-polling-with-react-and-apollo-client-fb36e390d250)

**[⬆ Back to Top](#table-of-contents)**

## 34. Cache

### Articles

* πŸ“œ [A Different Approach to GraphQL Caching - Adam Reacts](https://adamrackis.dev/graphql-caching-and-micro/)
* πŸ“œ [Understanding Caching - Weblab Technology](https://medium.com/p/58756ff253d8#9388)
* πŸ“œ [Caching with GraphQl: What are the best options? - Will Howard](https://blog.usejournal.com/caching-with-graphql-what-are-the-best-options-e161b0f20e59)
* πŸ“œ [GraphQL VS Rest: Caching - Phil Sturgeon](https://philsturgeon.uk/api/2017/01/26/graphql-vs-rest-caching/)
* πŸ“œ [Learn Caching - Graphql.org](https://graphql.org/learn/caching/)
* πŸ“œ [Overview: GraphQL Query Parsing and Caching at the Edge - Monika Rathor](https://developer.akamai.com/blog/2018/10/29/overview-graphql-query-parsing-and-caching-edge)
* πŸ“œ [GraphQL & Caching: The Elephant in the Room - Marc-AndrΓ© Giroux](https://blog.apollographql.com/graphql-caching-the-elephant-in-the-room-11a3df0c23ad)

### Videos

* πŸŽ₯ [GraphQL Caching using DataLoader β€” Fun Fun Function](https://www.youtube.com/watch?v=--AguZ20lLA)
* πŸŽ₯ [Feature: GraphQL Caching with DataLoader β€” Ben Awad](https://www.youtube.com/watch?v=tSQ7WuAcAbU)

**[⬆ Back to Top](#table-of-contents)**

---

# Best Practices

## 35. Schema Design

### Articles

* πŸ“œ [GraphQL best practices for GraphQL schema design - David Mraz](https://graphqlmastery.com/blog/graphql-best-practices-for-graphql-schema-design)
* πŸ“œ [GraphQL Schema Design: Building Evolvable Schemas - Marc-AndrΓ© Giroux](https://blog.apollographql.com/graphql-schema-design-building-evolvable-schemas-1501f3c59ed5)
* πŸ“œ [Writing a Graphql Schema - Eitan Frailich](https://github.com/davidyaha/graphql-workshop/blob/master/manuals/step-2-writing-a-schema.md)
* πŸ“œ [Abstract Demand Oriented Schema - Apollo](https://principledgraphql.com/agility#4-abstract-demand-oriented-schema)


### Videos

* πŸŽ₯ [GraphQL Schema Design β€” Marc-AndrΓ© Giroux](https://www.youtube.com/watch?v=pJamhW2xPYw)

**[⬆ Back to Top](#table-of-contents)**

## 36. Pagination

### Articles

* πŸ“œ [Pagination](https://graphql.org/learn/pagination/)

**[⬆ Back to Top](#table-of-contents)**

## 37. Logging

### Articles

* πŸ“œ [GraphQL Log - withSpectrum](https://github.com/withspectrum/graphql-log)
* πŸ“œ [Structured Logging - Apollo](https://principledgraphql.com/operations#9-structured-logging)

**[⬆ Back to Top](#table-of-contents)**

## Contributors

Thanks goes to these wonderful people ([emoji key](https://github.com/all-contributors/all-contributors#emoji-key)):

| [Kelsey Yim
Kelsey Yim](https://github.com/kelseyyim)
[🚧](#maintenance-kelseyyim "Maintenance") | [Rohit Ravikoti
Rohit Ravikoti](https://novvum.io)
[🚧](#maintenance-rohit-ravikoti "Maintenance") | [Alli Colyer
Alli Colyer](http://www.alli.science)
[πŸ–‹](#content-Allicolyer "Content") | [Raj K Singh
Raj K Singh](https://www.novvum.io)
[πŸ–‹](#content-rajinwonderland "Content") | [Jorge Carlos
Jorge Carlos](https://github.com/Jorge0521)
[πŸ–‹](#content-Jorge0521 "Content") | [Henry Yang
Henry Yang](https://github.com/hkyang995)
[πŸ–‹](#content-hkyang995 "Content") | [TrevHeath
TrevHeath](https://github.com/TrevHeath)
[πŸ–‹](#content-TrevHeath "Content") |
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!