├── docs
├── frontend
│ ├── index.md
│ └── javascript.md
├── backend
│ ├── lua.md
│ ├── julia.md
│ ├── ocaml.md
│ ├── haskell.md
│ ├── unity.md
│ ├── crystal.md
│ ├── erlang.md
│ ├── clojurescript.md
│ ├── perl.md
│ ├── rust.md
│ ├── c.md
│ ├── groovy.md
│ ├── kotlin.md
│ ├── r.md
│ ├── dart.md
│ ├── clojure.md
│ ├── scala.md
│ ├── elm.md
│ ├── sql.md
│ ├── swift.md
│ ├── elixir.md
│ ├── net.md
│ ├── ruby.md
│ ├── go.md
│ ├── index.md
│ ├── python.md
│ ├── php.md
│ ├── java.md
│ └── javascript.md
├── graphql-courses.md
├── graphql-community.md
├── what-is-graphql
│ ├── beginner-articles.md
│ ├── beginner-courses.md
│ ├── beginner-audio.md
│ ├── index.md
│ ├── beginner-videos.md
│ └── try-it-out.md
├── what-to-learn.md
├── graphql-services.md
├── getting-started.md
└── what-is-graphql-more.md
├── .gitignore
├── .prettierrc
├── README.md
├── package.json
├── CONTRIBUTING.md
└── CODE_OF_CONDUCT.md
/docs/frontend/index.md:
--------------------------------------------------------------------------------
1 | # TODO
2 |
--------------------------------------------------------------------------------
/docs/backend/lua.md:
--------------------------------------------------------------------------------
1 | # Lua
2 |
3 | ### TODO
4 |
5 | - [graphql-lua](https://github.com/bjornbytes/graphql-lua) - GraphQL for Lua.
6 |
--------------------------------------------------------------------------------
/docs/backend/julia.md:
--------------------------------------------------------------------------------
1 | # Julia
2 |
3 | ### TODO
4 |
5 | - [Diana.jl](https://github.com/codeneomatrix/Diana.jl) - Julia client for GraphQL.
6 |
--------------------------------------------------------------------------------
/docs/backend/ocaml.md:
--------------------------------------------------------------------------------
1 | # OCaml
2 |
3 | ### TODO
4 |
5 | - [ocaml-graphql-server](https://github.com/andreas/ocaml-graphql-server) - GraphQL servers in OCaml.
6 |
--------------------------------------------------------------------------------
/docs/backend/haskell.md:
--------------------------------------------------------------------------------
1 | # Haskell
2 |
3 | ### TODO
4 |
5 | - [graphql-haskell](https://github.com/jdnavarro/graphql-haskell) - GraphQL AST and parser for Haskell.
6 |
--------------------------------------------------------------------------------
/docs/backend/unity.md:
--------------------------------------------------------------------------------
1 | # Unity
2 |
3 | ### TODO
4 |
5 | - [graphQL-client-unity](https://github.com/Gazuntype/graphQL-client-unity) - A Unity client for GraphQL.
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .DS_Store
3 | Thumbs.db
4 | .idea/
5 | .vscode/
6 | *.sublime-project
7 | *.sublime-workspace
8 | *.log
9 | yarn.lock
10 | .cache
11 |
--------------------------------------------------------------------------------
/docs/backend/crystal.md:
--------------------------------------------------------------------------------
1 | # Crystal
2 |
3 | ### Server libraries
4 |
5 | - [graphql-crystal](https://github.com/ziprandom/graphql-crystal) - A graphql implementation for Crystal
6 |
--------------------------------------------------------------------------------
/docs/graphql-courses.md:
--------------------------------------------------------------------------------
1 | # GraphQL Courses
2 |
3 | ### TODO
4 |
5 | - [Let's Learn GraphQL](https://letslearngraphql.com/) 5 hours free GraphQL Workshop taught by Sara Vieira.
6 |
--------------------------------------------------------------------------------
/docs/backend/erlang.md:
--------------------------------------------------------------------------------
1 | # Erlang
2 |
3 | ### Server libraries
4 |
5 | - [graphql-erlang](https://github.com/shopgun/graphql-erlang) - Pure Erlang implementation with IDL and pattern-matching.
6 |
--------------------------------------------------------------------------------
/docs/backend/clojurescript.md:
--------------------------------------------------------------------------------
1 | # Clojurescript
2 |
3 | ### GraphQL Clients
4 |
5 | - [re-graph](https://github.com/oliyh/re-graph/) A GraphQL client implemented in Clojurescript with support for websockets.
6 |
--------------------------------------------------------------------------------
/docs/backend/perl.md:
--------------------------------------------------------------------------------
1 | # Perl
2 |
3 | ### TODO
4 |
5 | - [Perl6-GraphQL](https://github.com/CurtTilmes/Perl6-GraphQL) - GraphQL for Perl6.
6 | - [graphql-perl](https://github.com/graphql-perl/graphql-perl) - GraphQL for Perl5.
7 |
--------------------------------------------------------------------------------
/docs/backend/rust.md:
--------------------------------------------------------------------------------
1 | # Rust
2 |
3 | ### Tools
4 |
5 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
6 |
7 | ### TODO
8 |
9 | - [juniper](https://github.com/mhallin/juniper) - GraphQL server library for Rust.
10 |
--------------------------------------------------------------------------------
/docs/backend/c.md:
--------------------------------------------------------------------------------
1 | # C/C++
2 |
3 | ### Tools
4 |
5 | - [libgraphqlparser](https://github.com/graphql/libgraphqlparser) - A GraphQL query parser in C++ with C and C++ APIs.
6 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries in C++
7 |
--------------------------------------------------------------------------------
/docs/backend/groovy.md:
--------------------------------------------------------------------------------
1 | # Groovy
2 |
3 | ### Server libraries
4 |
5 | - [gorm-graphql](https://github.com/grails/gorm-graphql/) provides functionality to generate a GraphQL schema based on your GORM entities
6 | - [GQL](https://grooviter.github.io/gql/) a Groovy library for GraphQL
7 |
--------------------------------------------------------------------------------
/docs/backend/kotlin.md:
--------------------------------------------------------------------------------
1 | # Kotlin
2 |
3 | ### Tools
4 |
5 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
6 |
7 | ### TODO
8 |
9 | - [ktq](https://github.com/prestongarno/ktq) - Kotlin gradle plugin SDL type generator & runtime client
10 |
--------------------------------------------------------------------------------
/docs/backend/r.md:
--------------------------------------------------------------------------------
1 | # R
2 |
3 | ### TODO
4 |
5 | - [graphql](https://github.com/ropensci/graphql) - Bindings to libgraphqlparser for R.
6 | - [gqlr](https://github.com/schloerke/gqlr) - GraphQL server package for R.
7 | - [ghql](https://github.com/ropensci/ghql) - GraphQL client package for R.
8 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "overrides": [
4 | {
5 | "files": "*.md",
6 | "options": {
7 | "printWidth": 70,
8 | "useTabs": false,
9 | "trailingComma": "none",
10 | "proseWrap": "never"
11 | }
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/docs/backend/dart.md:
--------------------------------------------------------------------------------
1 | # Dart
2 |
3 | ### GraphQL Clients
4 |
5 | - [graphql_client](https://github.com/hourliert/graphql_client) GraphQL Client written in Dart (no longer active)
6 |
7 | ### Tools
8 |
9 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 👋 Hello
2 |
3 | ## So you want to learn GraphQL?
4 |
5 | Learning a new technology is hard, we know, so we're here to help. Throughout this journey, you'll find free resources and tutorials that'll get you going.
6 |
7 | First question: Do you know what GraphQL is?
8 |
9 | [Yes](/docs/what-to-learn.md)
10 |
11 | [No](/docs/getting-started.md)
12 |
--------------------------------------------------------------------------------
/docs/graphql-community.md:
--------------------------------------------------------------------------------
1 | # GraphQL Community
2 |
3 | ### TODO
4 |
5 | - [awesome-graphql](https://github.com/chentsulin/awesome-graphql) A community maintained collection of libraries, resources, and more.
6 | - [Community Resources](https://graphql.github.io/community/)
7 | - [graphql-apis](https://github.com/APIs-guru/graphql-apis)
8 | - [GraphQL Foundation](https://gql.foundation/)
9 |
--------------------------------------------------------------------------------
/docs/what-is-graphql/beginner-articles.md:
--------------------------------------------------------------------------------
1 | # So you want to know what GraphQL is?
2 |
3 | Here are some of our favorite written articles and tutorials for absolute beginners.
4 |
5 | # TODO
6 |
7 | ## Ready to continue?
8 |
9 | [Yes, let's try it out](/docs/what-is-graphql/try-it-out.md)
10 |
11 | [No, I think I need more resources](/docs/what-is-graphql-more.md)
12 |
13 | [I'd like to see different types of resources](/docs/what-is-graphql/index.md)
14 |
--------------------------------------------------------------------------------
/docs/what-to-learn.md:
--------------------------------------------------------------------------------
1 | # So what do you want to learn?
2 |
3 | Now that you know what GraphQL is, you can start building some rad shit with it.
4 |
5 | There are two main ways to use GraphQL: You can use it create dope APIs. Or you can use it to consume those APIs and make your frontend code super sweet.
6 |
7 | In order to continue on this journey, we need to know if you want to:
8 |
9 | [Build APIs](/docs/backend/index.md)
10 |
11 | [Use it in the frontend](/docs/frontend/index.md)
12 |
--------------------------------------------------------------------------------
/docs/backend/clojure.md:
--------------------------------------------------------------------------------
1 | # Clojure
2 |
3 | ### Server libraries
4 |
5 | -
6 | [alumbra](https://github.com/alumbra/alumbra) - A set of reusable GraphQL components for Clojure conforming to the data structures given in [alumbra.spec](https://github.com/alumbra/alumbra.spec)
7 | -
8 | [graphql-clj](https://github.com/tendant/graphql-clj) - A Clojure library that provides a GraphQL implementation.
9 | -
10 | [lacinia](https://github.com/walmartlabs/lacinia) - GraphQL implementation in pure Clojure
11 |
--------------------------------------------------------------------------------
/docs/backend/scala.md:
--------------------------------------------------------------------------------
1 | # Scala
2 |
3 | ### Tutorials
4 |
5 | - [How to GraphQL graphql-scala](https://www.howtographql.com/graphql-scala/0-introduction/)
6 |
7 | ### Server libraries
8 |
9 | - [sangria](https://github.com/sangria-graphql/sangria) - Scala GraphQL client and server library.
10 | - [graphql-scala](https://github.com/hrosenhorn/graphql-scala) - An attempt to get GraphQL going with Scala.
11 |
12 | ### TODO
13 |
14 | - [sangria-relay](https://github.com/sangria-graphql/sangria-relay) - Sangria Relay Support.
15 |
--------------------------------------------------------------------------------
/docs/what-is-graphql/beginner-courses.md:
--------------------------------------------------------------------------------
1 | # So you want to know what GraphQL is?
2 |
3 | Here are some of our favorite online courses for absolute beginners.
4 |
5 | # TODO
6 |
7 |
8 |
9 |
10 | ## Ready to continue?
11 |
12 | [Yes, let's try it out](/docs/what-is-graphql/try-it-out.md)
13 |
14 | [No, I think I need more resources](/docs/what-is-graphql-more.md)
15 |
16 | [I'd like to see different types of resources](/docs/what-is-graphql/index.md)
17 |
--------------------------------------------------------------------------------
/docs/what-is-graphql/beginner-audio.md:
--------------------------------------------------------------------------------
1 | # So you want to know what GraphQL is?
2 |
3 | Here are some of our favorite podcasts and other audio resources for absolute beginners.
4 |
5 | # TODO
6 |
7 |
8 |
9 |
10 | ## Ready to continue?
11 |
12 | [Yes, let's try it out](/docs/what-is-graphql/try-it-out.md)
13 |
14 | [No, I think I need more resources](/docs/what-is-graphql-more.md)
15 |
16 | [I'd like to see different types of resources](/docs/what-is-graphql/index.md)
17 |
--------------------------------------------------------------------------------
/docs/what-is-graphql/index.md:
--------------------------------------------------------------------------------
1 | # So you want to learn GraphQL?
2 |
3 | Different people have different preferences for how they learn. So we've compiled some options for you so you're not stuck with video series when you'd rather have a written tutorial (or vice versa).
4 |
5 | ## How do you prefer to learn?
6 |
7 | [Articles ✏️](/docs/what-is-graphql/beginner-articles.md)
8 |
9 | [Audio 🎙](/docs/what-is-graphql/beginner-audio.md)
10 |
11 | [Videos 📹](/docs/what-is-graphql/beginner-videos.md)
12 |
13 | [Courses 👩🏫](/docs/what-is-graphql/beginner-courses.md)
14 |
--------------------------------------------------------------------------------
/docs/backend/elm.md:
--------------------------------------------------------------------------------
1 | # Elm
2 |
3 | ### Tools
4 |
5 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
6 |
7 | ### TODO
8 |
9 | - [elm-graphql](https://github.com/dillonkearns/elm-graphql) Autogenerate type-safe GraphQL queries in Elm.
10 | - [elm-graphql](https://github.com/jamesmacaulay/elm-graphql) A GraphQL library for Elm
11 | - [A beginner's guide to GraphQL with Elm](https://medium.com/@zenitram.oiram/a-beginners-guide-to-graphql-with-elm-315b580f0aad)
12 | - [Type-Safe & Composable GraphQL in Elm](https://medium.com/open-graphql/type-safe-composable-graphql-in-elm-b3378cc8d021)
13 |
--------------------------------------------------------------------------------
/docs/frontend/javascript.md:
--------------------------------------------------------------------------------
1 | # JavaScript
2 |
3 | ### GraphQL Clients
4 |
5 | - [Relay](https://github.com/facebook/relay) Relay is a JavaScript framework for building data-driven React applications.
6 | - [apollo-client](https://github.com/apollographql/apollo-client) A well-documented GraphQL client. Has React and Angular bindings.
7 | - [urql](https://github.com/FormidableLabs/urql) A caching GraphQL client for React.
8 | - [micro-graphql-react](https://github.com/arackaf/micro-graphql-react) A lightweight utility for adding GraphQL to React. components. Includes simple caching and uses GET requests that could additionally be cached through a service-worker.
9 | - [react-reach](https://github.com/kennetpostigo/react-reach) A small library for React to communicate with GraphQL through Redux.
10 |
--------------------------------------------------------------------------------
/docs/backend/sql.md:
--------------------------------------------------------------------------------
1 | # SQL
2 |
3 | ### TODO
4 |
5 | - [GraphpostgresQL](https://github.com/solidsnack/GraphpostgresQL) - GraphQL for Postgres.
6 | - [sql-to-graphql](https://github.com/rexxars/sql-to-graphql) - Generate a GraphQL API based on your SQL database structure.
7 | - [PostGraphile](https://github.com/graphile/postgraphile) - A GraphQL API created by reflection over a PostgreSQL schema.
8 | - [rdbms-to-graphql](https://github.com/ebridges/rdbms-to-graphql) - A Java CLI program that generates a GraphQL schema from a JDBC data source.
9 | - [Prisma](https://github.com/graphcool/prisma) - Turn your database into a GraphQL API. Prisma lets you design your data model and have a production ready GraphQL API online in minutes.
10 | - [tuql](https://github.com/bradleyboy/tuql) - Automatically create a GraphQL server from any sqlite database.
11 |
--------------------------------------------------------------------------------
/docs/backend/swift.md:
--------------------------------------------------------------------------------
1 | # Swift / Objective-C
2 |
3 | ### GraphQL Clients
4 |
5 | - [graphql-ios](https://github.com/funcompany/graphql-ios) An Objective-C GraphQL client for iOS.
6 | - [Apollo iOS](https://github.com/apollographql/apollo-ios) Strongly typed, code-generating, caching GraphQL client for Swift. [Introduction](https://www.apollographql.com/docs/ios/)
7 |
8 | ### Tools
9 |
10 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
11 |
12 |
13 | ### TODO
14 |
15 | - [GraphQL](https://github.com/GraphQLSwift/GraphQL) - Build GraphQL APIs with Swift.
16 | - [Graphiti](https://github.com/GraphQLSwift/Graphiti) - Build Swiftier GraphQL APIs with Swift.
17 | - [Gryphin](https://github.com/dbart01/Gryphin) - Type-safe GraphQL client for iOS and MacOS written in Swift.
18 | - [LiveGQL](https://github.com/florianmari/LiveGQL) - GraphQL Subscription client in Swift.
19 |
--------------------------------------------------------------------------------
/docs/backend/elixir.md:
--------------------------------------------------------------------------------
1 | # Elixir
2 |
3 | ### Tutorials
4 |
5 | - [How to GraphQL graphql-elixir](https://www.howtographql.com/graphql-elixir/0-introduction/)
6 |
7 | ### Server libraries
8 |
9 | - [absinthe](https://github.com/absinthe-graphql/absinthe) - Fully Featured Elixir GraphQL Library.
10 | - [graphql-elixir](https://github.com/graphql-elixir/graphql) - GraphQL Elixir.
11 |
12 | ## TODO
13 |
14 | - [plug_graphql](https://github.com/graphql-elixir/plug_graphql) - Plug integration for GraphQL Elixir.
15 | - [graphql_relay](https://github.com/graphql-elixir/graphql_relay) - Relay helpers for GraphQL Elixir.
16 | - [graphql_parser](https://github.com/graphql-elixir/graphql_parser) - Elixir bindings for [libgraphqlparser](https://github.com/graphql/libgraphqlparser)
17 | - [graphql](https://github.com/asonge/graphql) - Elixir GraphQL parser.
18 | - [plot](https://github.com/peburrows/plot) - GraphQL parser and resolver for Elixir.
19 |
--------------------------------------------------------------------------------
/docs/backend/net.md:
--------------------------------------------------------------------------------
1 | # .NET
2 |
3 | ### Server Libraries
4 |
5 | - [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet) - GraphQL for .NET.
6 | - [graphql-net](https://github.com/ckimes89/graphql-net) - GraphQL to IQueryable for .NET
7 | - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate) - GraphQL Server for .net core and .net classic
8 |
9 | ### GraphQL Clients
10 |
11 | - [GraphQL.Client](https://github.com/graphql-dotnet/graphql-client) - GraphQL Client for .NET.
12 | - [graphql-net-client](https://github.com/bkniffler/graphql-net-client) Example GraphQL client for .NET
13 | - [SAHB.GraphQLClient](https://github.com/sahb1239/SAHB.GraphQLClient) GraphQL client which supports generating queries from C# classes
14 |
15 | ### TODO
16 |
17 | - [Conventions](https://github.com/graphql-dotnet/conventions) - Reflection-based schema generation for .NET.
18 | - [FSharp.Data.GraphQL](https://github.com/fsprojects/FSharp.Data.GraphQL) - FSharp GraphQL.
19 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "so-you-want-to-learn-graphql",
3 | "version": "1.0.0",
4 | "description": "'Choose Your Own Adventure' but with GraphQL",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "vuepress dev",
8 | "build": "vuepress build",
9 | "format": "prettier --write '**/*.{js,css,md}'",
10 | "posttest": "npm run format"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/carolstran/so-you-want-to-learn-graphql.git"
15 | },
16 | "author": "Carolyn Stransky and Sara Vieira",
17 | "license": "MIT",
18 | "bugs": {
19 | "url": "https://github.com/carolstran/so-you-want-to-learn-graphql/issues"
20 | },
21 | "homepage": "https://github.com/carolstran/so-you-want-to-learn-graphql#readme",
22 | "devDependencies": {
23 | "prettier": "^1.13.7",
24 | "vuepress": "1.6.0"
25 | },
26 | "dependencies": {
27 | "braces": "^2.3.1",
28 | "extend": "^3.0.2",
29 | "js-yaml": "^3.13.1",
30 | "lodash": "^4.17.19",
31 | "mrm": "^1.2.1"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/docs/what-is-graphql/beginner-videos.md:
--------------------------------------------------------------------------------
1 | # So you want to know what GraphQL is?
2 |
3 |
4 |
5 | Here are some of our favorite video resources for absolute beginners.
6 |
7 | # TODO
8 |
9 | ## What is GraphQL?
10 |
11 | In this video Nikola Burk will go over the basics of what GraphQL is.
12 |
13 |
14 |
15 | ## How does it compare to REST?
16 |
17 | In this video Nikola Burk will go over how this new spec compares to REST and why it's better in his opnion.
18 |
19 |
20 |
21 |
22 |
23 | ## Ready to continue?
24 |
25 | [Yes, let's try it out](/docs/what-is-graphql/try-it-out.md)
26 |
27 | [No, I think I need more resources](/docs/what-is-graphql-more.md)
28 |
29 | [I'd like to see different types of resources](/docs/what-is-graphql/index.md)
30 |
--------------------------------------------------------------------------------
/docs/backend/ruby.md:
--------------------------------------------------------------------------------
1 | # Ruby
2 |
3 | ### Tutorials
4 |
5 | - [How to GraphQL graphql-ruby](https://www.howtographql.com/graphql-ruby/0-introduction/)
6 |
7 | ### Server libraries
8 |
9 | - [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) - Ruby implementation of Facebook's GraphQL.
10 |
11 | ### Tools
12 |
13 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
14 | - [graphiql-rails](https://github.com/rmosolgo/graphiql-rails) Mount the GraphiQL IDE in Ruby on Rails.
15 |
16 | ### TODO
17 |
18 | - [graphql-parser](https://github.com/Shopify/graphql-parser) - A small ruby gem wrapping the libgraphqlparser C library for parsing GraphQL.
19 | - [graphql-client](https://github.com/github/graphql-client) - A Ruby library for declaring, composing and executing GraphQL queries.
20 | - [graphql-batch](https://github.com/Shopify/graphql-batch) - A query batching executor for the graphql gem.
21 | - [batch-loader](https://github.com/exaspark/batch-loader) – A powerful tool to avoid N+1 queries without extra dependencies or primitives.
22 | - [graphql-guard](https://github.com/exAspArk/graphql-guard) - A simple field-level authorization for the graphql gem.
23 |
--------------------------------------------------------------------------------
/docs/graphql-services.md:
--------------------------------------------------------------------------------
1 | # Services
2 |
3 | ### TODO
4 |
5 | - [Apollo Engine](https://www.apollographql.com/platform/) A service for monitoring the performance and usage of your GraphQL backend.
6 | - [GraphCMS](https://graphcms.com/) A BaaS (Backend as a Service) that sets you up with a GraphQL backend as well as tools for content editors to work with the stored data.
7 | - [Prisma](https://github.com/prisma)
8 | - [Reindex](https://github.com/reindexio/reindex-js) A BaaS (Backend as a Service) that sets you up with a GraphQL backend targeted at applications using React and Relay. [Website](https://www.reindex.io/)
9 | - [Insomnia](https://github.com/getinsomnia/insomnia) Cross-platform HTTP and GraphQL Client
10 | - [Scaphold](https://github.com/scaphold-io) A BaaS (Backend as a Service) that sets you up with a GraphQL backend for your applications with many different integrations.
11 | - [Tipe](https://github.com/tipeio) A SaaS (Software as a Service) content management system that allows you to create your content with powerful editing tools and access it from anywhere with a GraphQL or REST API.
12 | - [AWS AppSync](https://aws.amazon.com/appsync/) Fully managed GraphQL service with realtime subscriptions, offline programming & synchronization, and enterprise security features as well as fine grained authorization controls.
13 | - [Hasura](https://hasura.io/) A BaaS (Backend as a Service) that lets you create tables, define permissions on Postgres and query and manipulate using a GraphQL interface.
14 |
--------------------------------------------------------------------------------
/docs/backend/go.md:
--------------------------------------------------------------------------------
1 | # Go
2 |
3 | ### Server libraries
4 |
5 | - [graphql-go/graphql](https://github.com/graphql-go/graphql) - An implementation of GraphQL for Go follows graphql-js
6 | - [machinebox/graphql](https://github.com/machinebox/graphql) - Simple low-level GraphQL client for Go
7 | - [graphql-relay-go](https://github.com/graphql-go/relay) - A Go/Golang library to help construct a server supporting react-relay.
8 | - [samsarahq/thunder](https://github.com/samsarahq/thunder) A GraphQL implementation with schema building, live queries, and batching.
9 | - [gqlgen](https://github.com/99designs/gqlgen) Go generate based graphql server library.
10 | - [graphql-go](https://github.com/neelance/graphql-go) - GraphQL server with a focus on ease of use.
11 | - [go-graphql](https://github.com/playlyfe/go-graphql) - A powerful GraphQL server implementation for Golang
12 | - [dataloader](https://github.com/nicksrandall/dataloader) - Implementation of Facebook's DataLoader in Golang
13 | - [graph-gophers/graphql-go](https://github.com/graph-gophers/graphql-go) An active implementation of GraphQL in Golang
14 |
15 | ### GraphQL Clients
16 |
17 | - [shurcooL/graphql](https://github.com/shurcooL/graphql) A GraphQL client implementation in Go.
18 |
19 | ### TODO
20 |
21 | - [c-graphqlparser](https://github.com/tecbot/c-graphqlparser) - Go-gettable version of the libgraphqlparser C library for parsing GraphQL.
22 | - [tallstreet-graphql](https://github.com/tallstreet/graphql) - GraphQL parser and server for Go that leverages libgraphqlparser
23 |
--------------------------------------------------------------------------------
/docs/what-is-graphql/try-it-out.md:
--------------------------------------------------------------------------------
1 | # So you want to try GraphQL out?
2 |
3 | Now that you have an overview of some GraphQL fundamentals, let's try it out!
4 |
5 | We'll be using GraphiQL, an interactive, in-browser GraphQL IDE. If it sounds familiar, that's because we mentioned it at the very beginning of your journey.
6 |
7 |
8 |
9 | Here are some APIs that are already connected to a GraphiQL interface. Jump in and start writing queries!
10 |
11 | _Helpful GraphiQL hints:_
12 |
13 | - Opening up the `Docs` tab in the upper-right corner will show you the reference docs for the API connected to the GraphiQL interface
14 | - If you're on a Mac and click `ctrl + space`, it will tell you your options when writing your query
15 | - You can't use single quotes
16 |
17 | # TODO
18 |
19 | ### GitHub's GraphQL API
20 |
21 | If you’re using GitHub regularly, this is data that you’re probably already familiar with it - so it might be easier to comprehend how to fetch data and how it's being structured.
22 |
23 | ### Pokemon GraphQL API
24 |
25 |
26 |
27 |
28 | ## Want to learn more?
29 |
30 | [Yes, let's build something](/docs/what-to-learn.md)
31 |
32 | [Not yet, I want to go back to the resources](/docs/what-is-graphql-more.md)
33 |
--------------------------------------------------------------------------------
/docs/getting-started.md:
--------------------------------------------------------------------------------
1 | # So you want to learn GraphQL?
2 |
3 | That's great! When you ask around about how to learn GraphQL, people tend to give you two (not very helpful) answers: "Try it out" or read the docs. But it's not always that simple.
4 |
5 | Before you dive into the GraphQL, here are some sites we recommend bookmarking:
6 |
7 | ### Official GraphQL Documentation
8 |
9 | When learning a new technology, it may seem intuitive to go and try to read through all of the documentation. We wouldn't recommend this for GraphQL, but having the docs on-hand while you're learning will help if you get stuck on a particular concept and want to reference the source.
10 |
11 | ### Apollo's GraphQL Glossary
12 |
13 | The GraphQL community tends to use a lot of jargon when explaining concepts and it's easy to feel discouraged when these terms are unexplained. This resource from Apollo is a comprehensive list of important GraphQL words and acronyms.
14 |
15 | ### GraphiQL Repo
16 |
17 | Many GraphQL tutorials or API docs will send you to an interactive, in-browser GraphQL IDE called GraphiQL. It's a great way to experiment with crafting GraphQL queries, but it can be hard to know what to do if you land on the blank page. Referencing the repo can help you understand what how GraphiQL can help your learning.
18 |
19 | ## All good?
20 |
21 | [Continue](/docs/what-is-graphql/index.md)
22 |
--------------------------------------------------------------------------------
/docs/backend/index.md:
--------------------------------------------------------------------------------
1 | # So you want to build APIs?
2 |
3 | Whether you're interested in cats, the World Cup or anything in between - you can turn any topic into a GraphQL API.
4 |
5 | One of the best parts of GraphQL is that it's framework agnostic, so you can implement a GraphQL API using a bunch of different programming languages.
6 |
7 |
8 |
9 | What's your favorite one?
10 |
11 | - [C/C++](/docs/backend/c.md)
12 | - [Clojure](/docs/backend/clojure.md)
13 | - [Crystal](/docs/backend/crystal.md)
14 | - [Dart](/docs/backend/dart.md)
15 | - [Elixir](/docs/backend/elixir.md)
16 | - [Elm](/docs/backend/elm.md)
17 | - [Erlang](/docs/backend/erlang.md)
18 | - [Go](/docs/backend/go.md)
19 | - [Groovy](/docs/backend/groovy.md)
20 | - [Haskell](/docs/backend/haskell.md)
21 | - [Java](/docs/backend/java.md)
22 | - [JavaScript](/docs/backend/javascript.md)
23 | - [Julia](/docs/backend/julia.md)
24 | - [Kotlin](/docs/backend/kotlin.md)
25 | - [Lua](/docs/backend/lua.md)
26 | - [.Net](/docs/backend/net.md)
27 | - [OCaml](/docs/backend/ocaml.md)
28 | - [Perl](/docs/backend/perl.md)
29 | - [PHP](/docs/backend/php.md)
30 | - [Python](/docs/backend/python.md)
31 | - [R](/docs/backend/r.md)
32 | - [Ruby](/docs/backend/ruby.md)
33 | - [Rust](/docs/backend/rust.md)
34 | - [Scala](/docs/backend/scala.md)
35 | - [SQL](/docs/backend/sql.md)
36 | - [Swift](/docs/backend/swift.md)
37 | - [Unity](/docs/backend/unity.md)
38 |
--------------------------------------------------------------------------------
/docs/what-is-graphql-more.md:
--------------------------------------------------------------------------------
1 | # So you want more resources?
2 |
3 | How To GraphQL An series to get you started from 0 to production with GraphQL
4 |
5 | dwyl/learn-graphql A community-created tutorial for GraphQL
6 |
7 | The guide to learn GraphQL I wish I found few months go A good article from someone who was trying to learn GraphQL
8 |
9 | Facebook’s Graph API Documentation They cover definition commonly misinterpreted definitions like nodes, edges and fields quite well and give a good overview of thinking in terms of graphs.
10 |
11 | GraphQL Community Resources A variety of resources from newsletters to podcasts that you can check out. It’s not an exhaustive (or particularly diverse) list, but it’s a way to get going for sure.
12 |
13 | A Journey With GraphQL If you need to provide general examples of GraphQL use cases, I'd recommend listening to Michelle and Faduma’s talk from the London Node User Group. They describe their own use case at Conde Nast and begin covering other problems that GraphQL can solve around the 17 minute mark.
14 |
15 | ## Ready now?
16 |
17 | [Let's try it out](/docs/what-is-graphql/try-it-out.md)
18 |
19 | [Not yet, take me back to the different resource types](/docs/what-is-graphql/index.md)
20 |
--------------------------------------------------------------------------------
/docs/backend/python.md:
--------------------------------------------------------------------------------
1 | # Python
2 |
3 | ### Tutorials
4 |
5 | - [How to GraphQL graphql-python](https://www.howtographql.com/graphql-python/0-introduction/)
6 |
7 | ### Server libraries
8 |
9 | - [graphene](https://github.com/graphql-python/graphene) - A package for creating GraphQL schemas/types in a Pythonic easy way.
10 |
11 | ### GraphQL Clients
12 |
13 | - [gql](https://github.com/graphql-python/gql) A GraphQL client in Python.
14 | - [sgqlc](https://github.com/profusion/sgqlc) Python GraphQL client. Supports generating code generation for types defined in a GraphQL schema.
15 | - [python-graphql-client](https://github.com/graphcool/python-graphql-client) - Simple GraphQL client for Python 2.7+
16 |
17 | ### Tools
18 |
19 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
20 |
21 | ### TODO
22 |
23 | - [graphql-parser](https://github.com/tryolabs/graphql-parser) - GraphQL parser for Python.
24 | - [graphql-core](https://github.com/graphql-python/graphql-core) - GraphQL implementation for Python.
25 | - [graphql-relay-py](https://github.com/graphql-python/graphql-relay-py) - A library to help construct a graphql-py server supporting react-relay.
26 | - [graphql-parser-python](https://github.com/tallstreet/graphql-parser-python) - A python wrapper around libgraphqlparser.
27 | - [graphene-gae](https://github.com/graphql-python/graphene-gae) - Adds GraphQL support to Google AppEngine (GAE).
28 | - [flask-graphql](https://github.com/graphql-python/flask-graphql) - Adds GraphQL support to your Flask application.
29 | - [python-graphjoiner](https://github.com/healx/python-graphjoiner) - Create GraphQL APIs using joins, SQL or otherwise.
30 | - [graphene-django](https://github.com/graphql-python/graphene-django) - A Django integration for Graphene.
31 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # So you want to contribute to this repo?
2 |
3 | > ⚠️ This project has a [Code of Conduct](./CODE_OF_CONDUCT.md) that _all_ contributors are expected to follow.
4 |
5 | 👋🏼 First of all, thanks for being here! You're great 🎉
6 |
7 | This resource has been neglected for far too long. I'm hoping to change that - but any additional help is _always_ appreciated.
8 |
9 | ## Running the site locally
10 |
11 | After forking and cloning this repository, use [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) to install the dependencies and launch the site:
12 |
13 | ```bash
14 | # Install dependencies
15 | npm install
16 |
17 | # Spin up a local version of the site
18 | npm run dev
19 | ```
20 |
21 | Assuming there are no errors, you can access the site on `localhost:8080` 🎉
22 |
23 | ## Adding resources
24 |
25 | The best way to get involved is to add resources to the various pages in the learning flow. These can be links to server libraries in various languages, embedded videos describing concepts, the latest hangout of the GraphQL community - or anything else really!
26 |
27 | **Every page of the flow is located in the [`docs`](./docs) directory.** Feel free to explore these files to see where your resource fits best or where needs the most support. Hint: The [`frontend`](./docs/frontend) directory or anything marked with `TODO` are good places to start.
28 |
29 | If you're not sure of where your resource should go or have any questions, please [open an issue](https://github.com/carolstran/so-you-want-to-learn-graphql/issues/new) and we can discuss it.
30 |
31 | ## Changing the flow
32 |
33 | If you have an idea for how to improve the learning flow, please [open an issue](https://github.com/carolstran/so-you-want-to-learn-graphql/issues/new) with a short description of what you're thinking.
34 |
35 | ## Show your support
36 |
37 | If you found this site useful, please consider buying me a coffee so that I can continue to make educational materials!
38 |
39 | [](https://ko-fi.com/L4L41MXHP)
--------------------------------------------------------------------------------
/docs/backend/php.md:
--------------------------------------------------------------------------------
1 | # PHP
2 |
3 | ### Server libraries
4 |
5 | - [graphql-php](https://github.com/webonyx/graphql-php) - A PHP port of GraphQL reference implementation.
6 | - [graphql-relay-php](https://github.com/ivome/graphql-relay-php) - Relay helpers for GraphQL & PHP.
7 | - [Siler](https://github.com/leocavalcante/siler) PHP library powered with high-level abstractions to work with GraphQL. [Overview on the Siler website](https://siler.leocavalcante.com/graphql/)
8 |
9 | ### TODO
10 |
11 | - [API Platform](https://github.com/api-platform/api-platform) - API framework compatible with Symfony having native GraphQL support.
12 | - [laravel-graphql](https://github.com/Folkloreatelier/laravel-graphql) - Facebook GraphQL for Laravel 5.
13 | - [laravel-graphql-relay](https://github.com/nuwave/laravel-graphql-relay) - A Laravel library to help construct a server supporting react-relay.
14 | - [graphql-mapper](https://github.com/4rthem/graphql-mapper) - This library allows to build a GraphQL schema based on your model.
15 | - [graphql-bundle](https://github.com/suribit/GraphQLBundle) - GraphQL Bundle for Symfony 2.
16 | - [overblog/graphql-bundle](https://github.com/overblog/GraphQLBundle) - This bundle provides tools to build a complete GraphQL server in your Symfony App. Supports react-relay.
17 | - [GraphQL](https://github.com/Youshido/GraphQL) – Well documented PHP implementation with no dependencies.
18 | - [GraphQL Symfony Bundle](https://github.com/Youshido/GraphQLBundle) – GraphQL Bundle for the Symfony 3 (supports 2.6+).
19 | - [WPGraphQL](https://github.com/wp-graphql/wp-graphql) - WordPress plugin that exposes a Relay compliant GraphQL endpoint
20 | - [graphql-wp](https://github.com/tim-field/graphql-wp) – a WordPress plugin that exposes a GraphQL endpoint.
21 | - [eZ Platform GraphQL Bundle](https://www.symfony.fi/entry/graphql-bundle-adds-protocol-support-to-ez-platform-symfony-cms) - GraphQL Bundle for the eZ Platform Symfony CMS.
22 | - [GraphQL Middleware](https://github.com/stefanorg/graphql-middleware) - GraphQL Psr7 Middleware
23 | - [Zend Expressive GraphiQL Extension](https://github.com/stefanorg/zend-expressive-graphiql) - GraphiQL extension for zend expressive
24 | - [GraphQL for PHP7](https://github.com/digiaonline/graphql-php) - A batteries-included, standard-compliant and easy to work with implementation of the GraphQL specification in PHP7 (based on the reference implementation).
25 |
--------------------------------------------------------------------------------
/docs/backend/java.md:
--------------------------------------------------------------------------------
1 | # Java
2 |
3 | ### Tutorials
4 |
5 | - [How to GraphQL graphql-java](https://www.howtographql.com/graphql-java/0-introduction/)
6 |
7 | ### Server libraries
8 |
9 | - [graphql-java](https://github.com/graphql-java/graphql-java) - GraphQL Java implementation.
10 |
11 | ### GraphQL Clients
12 |
13 | - [apollo-android](https://github.com/apollographql/apollo-android) A strongly-typed, caching GraphQL client for Android, written in Java.
14 | - [nodes](https://github.com/americanexpress/nodes) A GraphQL JVM Client designed for constructing queries from standard model definitions. By American Express.
15 |
16 | ### Tools
17 |
18 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
19 |
20 |
21 | ### TODO
22 |
23 | - [graphql-java-type-generator](https://github.com/graphql-java/graphql-java-type-generator) - Auto-generates types for use with GraphQL Java
24 | - [schemagen-graphql](https://github.com/bpatters/schemagen-graphql) - Schema generation and execution package that turns POJO's into a GraphQL Java queryable set of objects. Enables exposing any service as a GraphQL service using Annotations.
25 | - [graphql-java-annotations](https://github.com/graphql-java/graphql-java-annotations) - Provides annotations-based syntax for schema definition with GraphQL Java.
26 | - [spring-graphql-common](https://github.com/oembedler/spring-graphql-common) - Spring Framework GraphQL Library.
27 | - [graphql-spring-boot](https://github.com/graphql-java/graphql-spring-boot) - GraphQL and GraphiQL Spring Framework Boot Starters.
28 | - [neo4j-graphql](https://github.com/neo4j-graphql/neo4j-graphql) - GraphQL bindings for Neo4j, generates and runs Cypher.
29 | - [vertx-graphql-service-discovery](https://github.com/engagingspaces/vertx-graphql-service-discovery) - Asynchronous GraphQL service discovery and querying for your microservices.
30 | - [vertx-dataloader](https://github.com/engagingspaces/vertx-dataloader) - Port of Facebook DataLoader for efficient, asynchronous batching and caching in clustered GraphQL environments
31 | - [LiveGQL](https://github.com/Billy-Bichon/LiveGQL) - GraphQL subscription client in Java.
32 | - [rdbms-to-graphql](https://github.com/ebridges/rdbms-to-graphql) - A Java CLI program that generates a GraphQL schema from a JDBC data source.
33 | - [Rejoiner](https://github.com/google/rejoiner) - Generates a GraphQL schema based on one or more gRPC microservices, or any other Protobuf source.
34 | - [graphql-spqr](https://github.com/leangen/graphql-spqr) - GraphQL SPQR aims to make it dead simple to add a GraphQL API to any Java project. It works by dynamically generating a GraphQL schema from Java code.
35 |
--------------------------------------------------------------------------------
/docs/backend/javascript.md:
--------------------------------------------------------------------------------
1 | # JavaScript
2 |
3 | ### Tutorials
4 |
5 | - [How to GraphQL graphql-node](https://www.howtographql.com/graphql-js/0-introduction/)
6 |
7 | ### Server libraries
8 |
9 | - [graphql-js](https://github.com/graphql/graphql-js/) reference implementation of the GraphQL specification, designed for running GraphQL in a Node.js environment. There's also a tutorial for [getting started with GraphQL.js](https://graphql.github.io/graphql-js/) on the GraphQL docs.
10 | - [express-graphql](https://github.com/graphql/express-graphql) reference implementation of a GraphQL API server over an Express webserver. [Tutorial for running an express graphql server](https://graphql.github.io/graphql-js/running-an-express-graphql-server/)
11 | - [apollo-server](https://github.com/apollographql/apollo-server) A set of GraphQL server packages from Apollo that work with various Node.js HTTP frameworks (Express, Connect, Hapi, Koa etc). [Introduction on the Apollo website](https://www.apollographql.com/docs/apollo-server/)
12 |
13 | ### GraphQL Clients
14 |
15 | - [Relay](https://github.com/facebook/relay) Facebook's framework for building React applications that talk to a GraphQL backend. [Relay website](https://facebook.github.io/relay/)
16 | - [apollo-client](https://github.com/apollographql/apollo-client) A powerful JavaScript GraphQL client, designed to work well with React, React Native, Angular 2, or just plain JavaScript. [Apollo website](https://www.apollographql.com/docs/react/)
17 | - [graphql-request](https://github.com/prisma/graphql-request) JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native) - basically a lightweight wrapper around fetch.
18 | - [Lokka](https://github.com/kadirahq/lokka) JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native)
19 | - [nanographql](https://github.com/yoshuawuyts/nanographql) Tiny GraphQL client library using template strings.
20 | - [gq-loader](https://github.com/Houfeng/gq-loader) JavaScript GraphQL client,Let the *.gql file be used as a module through webpack loader.
21 | - [AWS Amplify](https://aws-amplify.github.io/docs/js/api) A JavaScript library for application development using cloud services, which supports GraphQL backend and React components for working with GraphQL data.
22 | - [grafoo](https://github.com/grafoojs/grafoo) An all purpose GraphQL client with view layer integrations for multiple frameworks in just 1.6kb.
23 | - [fetchql](https://github.com/gucheen/FetchQL) A GraphQL query client using Fetch.
24 |
25 | ### Tools
26 |
27 | - [quicktype](https://github.com/quicktype/quicktype) Generate types for GraphQL queries
28 | - [graphiql](https://github.com/graphql/graphiql)
29 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to make participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies within all project spaces, and it also applies when
49 | an individual is representing the project or its community in public spaces.
50 | Examples of representing a project or community include using an official
51 | project e-mail address, posting via an official social media account, or acting
52 | as an appointed representative at an online or offline event. Representation of
53 | a project may be further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at [hello@workwithcarolyn.com](mailto:hello@workwithcarolyn.com). All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
--------------------------------------------------------------------------------