# End-to-end Type-Safe GraphQL Apps - Carlos Rufo ###### tags: `jsdc2019` {%hackmd @JSDC-tw/2019-announcement %} > Start here ## [DevJokes](https://github.com/shrutikapoor08/devjoke) - how do you comfort a JavaScript bug? - console - What the developer said to the repository - Fork you! ## Intro to GraphQL - Language-agnostic Specifiation to build APIs - it's not a framework - It's a specification - Features - Strongly Typed - introspectable - Query, Mutation and Subscription - trans port agnostic - Product Development - History - 由 Facebook 開發,後在 Nov,18 成立 Foundation - Live Coding - Effecient - Overfetching: Fetch more data that the the client actually - Underfetching: Fetch not enough data that the client actually needs - Docs - Auto-Generate - Typed - Up to date - Tooling - In-browser API IDE - Learn - [Docs](https://graphql.org/) - Confs - GQL Summit (OCT 30-31 2019, San Francisco, USA) - GQL ASIA (Feb 20-22 2020, Bengaluru, India) - GQL Conf - GQL Day? ## Exploring Graph**i**QL - [SpaceX](https://api.spacex.land/graphql) - [SpaceX Rest](https://api.spacex.land/rest) - [Github](https://github.com/spacexland) - 左側有 field 可以直接手動選擇 ## GraphQL Servers [展示 SpaceX API](https://github.com/spacexland/api) - src - context - servers - types - utils - index [sofa-api](https://github.com/Urigo/sofa) ## GraphQL Clients ApolloClient [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo) - 可以直接在開發前端中得知 GraphQL field ## Q&A 3. Use GraphQL may expose database schema 4. `useQuery<GetLaunch.Query>` - `<GetLaunch.Query>` is type 6. Cache in GraphQL ## Thank you [Slides](https://slides.com/swcarlosrj/end-to-end-type-safe-jsdc-taiwan-2019#/0/1)