Skip to content

Commit 31e029f

Browse files
committed
Edits based on feedback
1 parent cccb537 commit 31e029f

File tree

1 file changed

+33
-27
lines changed

1 file changed

+33
-27
lines changed

notes/NewSiteArchitecture.md

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,36 @@ This page is effectively a marketing page for GraphQL and should be the visual,
1010

1111
Above the fold, this page should succinctly explain what GraphQL is and illustrate with a simple (editable) query/response example. Before scrolling you should understand the following:
1212

13-
* GraphQL is an query language for APIs.
13+
* GraphQL solves the same problem as REST.
14+
* GraphQL is an query language for APIs (and not Databases).
1415
* GraphQL is sent by client applications, such as an iOS app.
1516
* GraphQL is evaluated by a web service and often returned as JSON.
16-
* GraphQL typically replaces REST.
17+
* GraphQL services provide a complete description of your data with a type system.
18+
* It's easy to build powerful tools for your data using GraphQL.
1719

1820
Below the fold we should introduce concepts one at a time, each with visual metaphor and take-aways:
1921

20-
1) GraphQL describes what a client needs in terms of how client developers think about data.
22+
1) GraphQL clients describe what they need in terms of how client developers think about data.
2123

2224
* If you're familiar with JSON, GraphQL is easy to learn and understand.
23-
* It's easy to anticipate the shape of the result for any query.
24-
* GraphQL only sends what you ask for, nothing more or less.
25+
* GraphQL only sends what you ask for, nothing more or less, making your app faster and more stable.
26+
* It's easy to anticipate the shape of the result of any query.
2527

2628
2) GraphQL queries can access many "resources" in a single network request.
2729

2830
* A query can access properties of not just one object, but of many related objects.
29-
* Compared to REST, GraphQL requires much less network activity.
31+
* A query can access multiple unrelated objects at once.
32+
* Compared to REST, GraphQL collects all the data needed for your app with much less network activity, making your app faster.
3033

31-
3) GraphQL services provide a type system.
34+
3) GraphQL services describes what's possible with a strong type system.
3235

36+
* GraphQL services provide a complete description of your data.
3337
* Every `{ }` corresponds to an object of a particular type, and every type describes the fields available.
34-
* GraphQL only runs queries that make sense.
38+
* GraphQL only runs queries that make sense and provides helpful error messages.
3539
* Tools and IDEs can make editing queries easy via type-aheads.
3640
* GraphiQL is a free tool that you can use.
3741
* Type system defines descriptions, making it easy to keep documentation up to date.
42+
* Every query guarantees the shape and type of its response.
3843

3944
4) GraphQL is composable via fragments.
4045

@@ -47,14 +52,14 @@ Below the fold we should introduce concepts one at a time, each with visual meta
4752
* Server does not need to worry about concerns of any particular client, only the complete set of capabilities. Clients are responsible for the data they receive.
4853
* Because GraphQL only sends what you ask for, new capabilities can be introduced via new fields on types with no impact on existing queries.
4954
* Old capabilities can be marked "deprecated" with no impact on existing queries.
50-
* Far fewer reasons for versioning your API when using GraphQL.
55+
* No versioning your API when using GraphQL leads to cleaner code on the server.
5156

5257
6) GraphQL queries are answered by simple functions on your server.
5358

5459
* GraphQL is not backed by any database technology, just like REST.
5560
* Every field on each type is represented by a function for retrieving that data.
56-
* A GraphQL executor will call your functions and use as much concurrency as possible.
57-
* Possibilities are endless for connecting to your server's existing data model.
61+
* GraphQL will call your functions and execute a query with optimal concurrency.
62+
* It's easy to write a GraphQL API using your existing data model.
5863

5964
Finally, there will be a set of links for learning more (diving into `Learn`) and for getting started (in `Code`). As well as a wall-o-logo for companies using GraphQL.
6065

@@ -76,45 +81,46 @@ The landing page for this section should begin as a more information-rich introd
7681

7782
There is then a TOC through the sections and chapters (this is a straw-man list, open to reordering and addition)
7883

84+
* Introducing GraphQL (this initial page)
7985
* Core Concepts:
80-
* Query Language:
81-
* Basics (queries, fields, arguments, aliases, comments)
86+
* Requests:
87+
* Basics (queries & mutations, fields, arguments, aliases, comments)
8288
* Variables
8389
* Fragments
8490
* Values
8591
* Directives (skip & include)
8692
* Type System:
8793
* Basics (Schema, Objects & Fields)
88-
* Scalars
89-
* Lists & NonNull
90-
* Interfaces
91-
* Unions
92-
* Enums
93-
* Advanced Topics:
94+
* Scalars & Enums
95+
* Lists & NonNull (mention error handling)
96+
* Interfaces & Unions
97+
* How GraphQL Works:
9498
* Validation
9599
* Execution & Error Handling
96100
* Introspection
97-
* Mutations
98101
* Best Practices:
99102
* Servers:
100-
* Schema Design Guidelines
101-
* Paginating Lists
102-
* Non-Breaking Changes
103-
* Performant Servers (Batching & Caching)
104-
* Authentication & Authorization
105103
* Serving over HTTP
104+
* Authentication & Authorization
105+
* Mutations
106+
* Paginating Lists
107+
* Schema Changes & Versioning
108+
* Query Performance (Batching & Caching)
109+
* Security & Rate Limiting
110+
* Schema Design Guidelines
106111
* Clients:
107112
* Using Variables
108113
* Co-locating Fragments
109114
* Caching Results
110115
* Persisted Queries
111116
* Generating Models
117+
* Migrating from REST
112118

113119
## Code
114120

115121
*Goal:* Introduce open source GraphQL tools along with quick getting started guidelines for each.
116122

117-
*Timeframe:* Top 3 servers described by Sept 12th, remainder by Sept 30th.
123+
*Timeframe:* At least 3 servers described by Sept 12th, remainder by Sept 30th.
118124

119125
This page is all about fulfilling the "Ok I'm sold! Now what?" conundrum. It should first very quickly reintroduce the elements of GraphQL you would expect to see software for as well as offer a quick path towards getting something working.
120126

@@ -141,7 +147,7 @@ Hosted GraphQL-as-a-service have an opportunity to pitch themselves here.
141147

142148
4) Tools
143149

144-
Highlight many common tools and libraries used by GraphQL community, e.g. GraphiQL.
150+
Common tools used by GraphQL community, e.g. GraphiQL.
145151

146152
## Community
147153

0 commit comments

Comments
 (0)