Modern GraphQL with Node - Complete Developers Guide
This course will teach you how to build a GraphQL API from absolute scratch. It is taught by a developer that has over 3 years of experience with GraphQL and has worked with it in multiple enterprise companies. By the end of this crash course, you will become an expert and know more than 99% of GraphQL hobbyists. This course isn't just aimed to teach you GraphQL, but how to properly utilize it in a real application. I hope you enjoy it!
More
We will be learning everything from scratch and thus you can be a GraphQL beginner to take this course. However, we will be using JavaScript as our primary language and thus some JS knowledge is ideal. We will also connect our server to the frontend and we will be using React as our client. Thus any frontend knowledge would be good but not unnecessary.
This course will teach you:
- - What is GraphQL
- - What are the benefits of GraphQL
- - Learn GraphQL terminology
- - How to build a GraphQL server
- - Modern design principles
- - Adding Authentication
- - Working with Prisma v3 to interact with a Postgres DB
- - Connecting GraphQL to the client
- - Improve performance by learning about the n + 1 problem and solving it will data loaders
Watch Online Modern GraphQL with Node - Complete Developers Guide
# | Title | Duration |
---|---|---|
1 | What is GraphQL | 03:18 |
2 | GraphQL Prevents Over-Fetching | 06:11 |
3 | GraphQL Prevents Under-Fetching | 04:04 |
4 | How Data is Organized | 03:36 |
5 | Local Environment Setup | 02:39 |
6 | Setting up a GraphQL Server | 15:25 |
7 | GraphQL Scalar Types | 08:31 |
8 | GraphQL Array Types | 04:42 |
9 | Nodemon for Hot Reloading | 02:16 |
10 | GraphQL Object Types | 06:39 |
11 | Querying an Array of Objects | 02:54 |
12 | Querying One Object with Variables | 08:32 |
13 | Queries for Categories | 11:01 |
14 | Relating Data (One to Many) | 10:13 |
15 | Relating Data (Many to One) | 06:21 |
16 | Reorganizing for a Better File Structure | 09:00 |
17 | The Context Param | 06:00 |
18 | Adding the Ability to Query for Reviews | 09:06 |
19 | Filtering and Input Type | 11:26 |
20 | Filter by Average Rating | 11:19 |
21 | Intro to Mutations | 03:13 |
22 | Creating Data - Part I | 07:16 |
23 | Creating Data - Part II | 13:23 |
24 | Deleting Data (with Set Null) - Part I | 15:41 |
25 | Deleting Data (with Delete Cascade) - Part II | 06:54 |
26 | Deleting Data - Part III | 02:27 |
27 | Updating Data - Part I | 09:16 |
28 | Updating Data - Part II | 08:19 |
29 | Introduction to GraphQL Design | 09:57 |
30 | A Naive Implementation | 08:36 |
31 | Rule 1 - Start with a High Level View of the Objects and Their Relationships | 03:11 |
32 | Rule 2 - Never Expose Implementation Details | 02:34 |
33 | Rule 3 - Design your API Around your Business Domain | 03:22 |
34 | Rule 4 - It's Easier to Add Fields than to Remove Them | 03:01 |
35 | Rule 5 - Group Closely-Related Fields Together into Sub-Objects | 02:45 |
36 | Rule 6 - Always Check if a List Should be Paginated | 03:34 |
37 | Rule 7 - Always use Object References Instead of ID Fields | 01:50 |
38 | Rule 8 - Choose Field Names Based on What Makes Sense, Not the Implementation | 01:13 |
39 | Rule 9 - Use Enums for Fields that can Only Take a Specific Set of Values | 01:45 |
40 | Rule 10 - Your API Should Provide Business Logic, Not Just Data | 03:05 |
41 | Rule 11 - Write Separate Mutations for Separate Logical Actions on a Resource | 02:19 |
42 | Rule 12 - For Relationship Mutations Consider Operating on Multiple Elements | 01:36 |
43 | Rule 13 - Prefix Mutation Names with the Object for Alphabetical Grouping | 05:34 |
44 | Rule 14 - Structure Mutation Inputs to Reduce Duplication | 04:04 |
45 | Rule 15 - Mutations Should Provide User/Business Level Errors | 03:13 |
46 | A New Project | 05:38 |
47 | A Little About TypeScript | 04:50 |
48 | Setting up TypeScript | 07:52 |
49 | Setting up an Apollo Server | 09:57 |
50 | A Little About SQL Databases | 06:41 |
51 | Spinning up a Postgres Instance | 05:14 |
52 | Connecting to Our Database with Prisma | 06:37 |
53 | Creating a Database Schema | 10:38 |
54 | Adding Entity Relationships | 09:07 |
55 | Defining Our GraphQL Schema | 21:38 |
56 | Creating Data with Prisma | 09:28 |
57 | Retrieving Data with Prisma | 05:04 |
58 | Updating Data with Prisma | 21:17 |
59 | Deleting Data with Prisma | 06:19 |
60 | What is Authentication & Authorization | 03:37 |
61 | A Naive Signup Implementation | 11:37 |
62 | Validating the Inputs | 11:36 |
63 | Password Hashing | 15:16 |
64 | Json Web Tokens | 12:36 |
65 | Creating a User Profile | 02:12 |
66 | Adding the Sign In Mutation | 12:44 |
67 | Identifying Users with JWT | 13:22 |
68 | Authorizing Users with JWT | 10:39 |
69 | Adding Publish/Unpublish Logic | 07:11 |
70 | The Me Query | 05:20 |
71 | The Profile Query | 08:49 |
72 | Relational Post Queries | 11:39 |
73 | The N + 1 Problem | 07:47 |
74 | Batching and Catching Queries | 05:55 |
75 | Adding a DataLoader to Improve Performace | 13:43 |
76 | Introduction to Client Connect | 04:25 |
77 | Connect the Client to GraphQL with Apollo Client | 05:51 |
78 | Querying From the Frontend | 11:47 |
79 | Querying with Variables | 10:47 |
80 | Conditional Rendering Based on Authentication Status | 03:21 |
81 | Passing the Auth Token From the Frontend | 06:50 |
82 | Executing Mutations From the Frontend | 13:25 |
83 | Adding Signin/Signup Logic | 17:54 |
84 | Adding Logic to Create a Post | 10:39 |
85 | The Last Steps | 00:49 |