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
- Explain why subscriptions are annoying when you just want to have the latest data
- TL:DR: https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql
- Propose live queries as potential alternatives with examples where it actually makes sense
- show json patch capabilities for only sending changed deltas to clients
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