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