# 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)