1 02:40 2 18:37 3 How To Go Through The Course 10:47 4 02:54 5 03:09 6 01:04 7 05:06 8 Running JavaScript with Node 02:59 9 Creating a minimal Node:Express Server 08:08 10 Automatic Reloading Using Nodemon 03:50 11 05:38 12 Adding TypeScript to our Server 16:11 13 Compiling our TypeScript project 03:06 14 13:18 15 Introducing mock listings 07:04 16 Creating GET and POST Express routes 10:46 17 04:04 18 00:43 19 05:41 20 Comparing Github's REST and GraphQL APIs 09:48 21 11:23 22 01:01 23 Installing Apollo Server and GraphQL 02:06 24 Creating a GraphQL Schema with the GraphQL JS Library 09:29 25 Querying and mutating listings data with GraphQL 11:34 26 Using the GraphQL Schema Language 10:52 27 02:07 28 00:55 29 03:45 30 Setting up a new MongoDB Cluster with Atlas 06:52 31 Connecting the server with MongoDB 11:19 32 TypeScript Generics and adding types to our Collections 12:34 33 08:02 34 Seeding mock data to the database 08:41 35 Processing Data from MongoDB 14:34 36 07:18 37 02:15 38 00:47 39 06:59 40 04:22 41 Create React App - The Rundown 15:58 42 00:46 43 03:47 44 03:27 45 Functional Components & TypeScript 06:48 46 14:17 47 Abstracting the type of data from server fetch 04:54 48 08:43 49 02:05 50 01:23 51 08:00 52 07:50 53 11:46 54 08:52 55 Custom useQuery and refetch 06:58 56 Custom useQuery and loading/error states 11:54 57 16:22 58 13:26 59 05:08 60 00:55 61 Creating our Apollo Client 04:22 62 04:09 63 Autogenerated types with Apollo CLI 10:25 64 02:39 65 00:27 66 UI Frameworks and Ant Design 04:35 67 20:31 68 00:33 69 01:56 70 15:11 71 Walkthrough of TinyHouse Code 12:18 72 10:55 73 How To Go Through The Course 16:40 74 02:52 75 00:34 76 06:15 77 07:27 78 01:06 79 Database Collection Structure 05:17 80 Database Document Structure 15:18 81 Seed & Clear Data from MongoDB 08:28 82 00:53 83 04:36 84 04:50 85 Google Sign-In GraphQL Fields 04:51 86 Using Google Sign-In & People API 08:31 87 Building the Authentication Resolvers 18:56 88 Building the UI for Login 11:36 89 22:36 90 Building the AppHeader & Logout 18:06 91 06:03 92 00:56 93 02:40 94 localStorage vs. sessionStorage vs. cookies 05:33 95 Adding the Viewer Cookie on the Server 11:06 96 Adding the Viewer Cookie on the Client 08:20 97 08:51 98 04:10 99 00:54 100 02:24 101 Modifying the User, Listing, and Booking GraphQL TypeDefs 10:48 102 Building the User Resolvers 21:39 103 The UserProfile React Component 23:02 104 The UserListings & UserBookings React Components 42:51 105 07:21 106 00:34 107 02:21 108 Building the Listing Resolvers 16:07 109 Querying for listing data 11:21 110 ListingDetails & ListingBookings 25:39 111 The ListingCreateBooking React Component 34:31 112 04:48 113 00:46 114 03:00 115 Building the Listings Resolvers 13:53 116 Building the UI of the Homepage 23:10 117 Displaying the highest-priced listings in the Homepage 19:59 118 03:14 119 01:05 120 08:16 121 Location-based searching for listings 07:49 122 Updating the listings resolver 19:50 123 Building the Listings page 17:34 124 Pagination & Filtering in the Listings page 30:34 125 Searching for listings from the App Header 26:57 126 Index location-based data 09:25 127 03:29 128 00:57 129 07:59 130 11:34 131 Stripe Connect GraphQL Fields 09:12 132 Building the Stripe Connect Resolvers 13:52 133 Connecting with Stripe on the Client 28:00 134 Disconnecting from Stripe on the Client 13:31 135 04:18 136 00:37 137 HostListing GraphQL Fields 02:44 138 Building the HostListing Resolver 15:28 139 Building the UI of the Host page 38:22 140 Executing the HostListing Mutation 28:21 141 05:06 142 00:42 143 Cloudinary & Image Storage 07:14 144 Image uploads with Cloudinary 08:47 145 01:05 146 CreateBooking GraphQL Fields 02:52 147 Building the CreateBooking Resolver 25:58 148 Resolving the BookingsIndex of a Listing 23:03 149 Disabling booked dates on the client 25:21 150 Creating the Booking Confirmation Modal 21:13 151 Displaying the Payment Form with React Stripe Elements 17:22 152 Executing the CreateBooking Mutation 28:11 153 09:02 154 00:29 155 06:41 156 45:14 157 Walkthrough of Deployed App 10:26 158 00:52 159 05:33 160 Apollo Client & FetchPolicy 16:33 161 useLayoutEffect & Window Scroll 10:27 162 10:26 163 Disconnecting from Stripe & Revoking Access 10:33 164 Additional Listing DatePicker Changes 10:07 165 00:41 166 00:49 167 05:07 168 06:05 169 16:04 170 TINYHOUSE - POSTGRESQL & TYPEORM 33:11 171 03:39 172 11:45 173 Jest & React Testing Library 30:38 174 08:36 175 08:23 176 Testing the Home Component I 23:21 177 Testing the Home Component II 40:34 178 Testing the Login Component I 26:17 179 Testing the Login Component II 29:00 180 Pushing code & creating PRs 14:40