├── 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 |