saihaj / graphql-ts-node-advanced-tutorial

WIP tutorial

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Structure thoughts

n1ru4l opened this issue · comments

What are our goals brainstorming?

  • We wanna teach people how we perceive and recommend GraphQL tooling
  • There is not just a server, a "server" is made of
    • Schema
    • HTTP logic
    • GraphQL logic (validate, parse, execute, subscribe)
  • How can we make building a Graphl Schema type-safe?
    • Codegen!
  • Why you want to use envelop
    • Show how and why you would implement logging from scratch
    • Show and implement error masking handling from scratch (e.g. via leaked database exceptions when trying to sign up with the same mail twice)
    • Show how and why you would implement parse caching from scratch
    • Show how and why you would implement validate caching from scratch
    • Show how we move that into an envelop plugin and how it makes stuff cleaner (aka we just taught how to write your envelope plugin)
    • Show how we already have all those plugins and you can just install and use them
  • Why you wanna apply authorization rules via SDL
    • Note: I am personally unsure if that is the way we should teach
    • TODO: insert reasons why in here
  • error handling using unions, interfaces https://blog.logrocket.com/handling-graphql-errors-like-a-champ-with-unions-and-interfaces/
    • refactor signIn mutation to return a union of Success Error instead of raising an error if an email is already in use
  • input unions via oneOf
    • explain the struggle
    • show envelop oneOf solution
  • response caching
    • why? reduce server load
    • show how to use with envelop
  • defer and stream
    • why do we need it
    • use it with an example that makes sense
  • Live Queries

WIP structure:

  • Improve the TypeScript schema development experience
  • Better schema modeling
    • Better Error modeling and handling with Union and Interface Types
    • Graphql inspector for detecting breaking changes
  • The anatomy of a GraphQL request
  • Customizing the GraphQL request
    • Learn how to write validation rules
    • Introduce Envelop
  • Making your GraphQL server production-ready
    • Authorization/Authentication
    • Error masking
    • query complexity analysis
    • parse/validate caching
    • response caching
    • error reporting
    • split schema into public and private API
  • The bleeding edge
    • defer and stream
    • input unions via oneOf
    • live queries

Do we want to cover features that still are not part of spec like oneOf and defer and stream?

yes we do