1. Урок 1.00:06:26
    Introduction
  2. Урок 2.00:06:22
    Setting up the project
  3. Урок 3.00:10:59
    Setting up the developer environment
  4. Урок 4.00:09:20
    React project contents
  5. Урок 5.00:03:30
    Hot Module Replacement
  6. Урок 6.00:06:28
    Folder structure
  7. Урок 7.00:06:57
    Source control
  8. Урок 8.00:01:40
    Course assets and source code
  9. Урок 9.00:02:29
    Introduction
  10. Урок 10.00:04:08
    Why React
  11. Урок 11.00:05:10
    React concepts
  12. Урок 12.00:04:16
    Intro to JSX
  13. Урок 13.00:04:17
    React Dev tools
  14. Урок 14.00:06:56
    Decisions made on this course
  15. Урок 15.00:02:18
    Introduction
  16. Урок 16.00:04:10
    Breaking up the UI into components
  17. Урок 17.00:12:01
    Intro to Semantic UI
  18. Урок 18.00:03:52
    Building our first component
  19. Урок 19.00:04:40
    Exports and imports
  20. Урок 20.00:11:25
    Navigation bar and styling
  21. Урок 21.00:07:50
    Event List Items
  22. Урок 22.00:04:09
    Creating an Event Form
  23. Урок 23.00:09:31
    Passing props down to child components
  24. Урок 24.00:11:55
    React component state
  25. Урок 25.00:02:22
    Summary of section 3
  26. Урок 26.00:03:20
    Introduction
  27. Урок 27.00:11:09
    Basic forms in React
  28. Урок 28.00:07:23
    Creating an event
  29. Урок 29.00:07:10
    Selecting an event to read
  30. Урок 30.00:05:59
    Controlled components with a key
  31. Урок 31.00:05:31
    Updating an event
  32. Урок 32.00:02:42
    Deleting an event
  33. Урок 33.00:06:15
    React class components
  34. Урок 34.00:01:41
    Summary of section 4
  35. Урок 35.00:04:21
    Introduction
  36. Урок 36.00:01:54
    Adding some additional components to route to
  37. Урок 37.00:06:14
    Routing configuration
  38. Урок 38.00:04:04
    Using NavLinks and Links
  39. Урок 39.00:07:20
    Home page styling
  40. Урок 40.00:05:25
    Adding menus for authenticated and unauthenticated users
  41. Урок 41.00:03:46
    Adding fake authentication
  42. Урок 42.00:03:29
    Using the useHistory hook
  43. Урок 43.00:05:34
    Event Detailed Page structure
  44. Урок 44.00:07:35
    Event Detailed Page content
  45. Урок 45.00:06:11
    Cleaning up the unused code
  46. Урок 46.00:02:33
    Summary of section 5
  47. Урок 47.00:08:32
    Introduction
  48. Урок 48.00:02:45
    React-Redux
  49. Урок 49.00:06:40
    Setting up Redux
  50. Урок 50.00:03:34
    Adding a sandbox area for experimenting with the code
  51. Урок 51.00:06:08
    Redux Actions
  52. Урок 52.00:03:35
    Action Creators
  53. Урок 53.00:04:36
    Redux Dev Tools
  54. Урок 54.00:08:24
    Creating the event reducer
  55. Урок 55.00:03:32
    RRF 6-9 Creating a root reducer
  56. Урок 56.00:10:32
    Getting events from the redux store
  57. Урок 57.00:08:58
    Dispatching event actions
  58. Урок 58.00:06:38
    Clean up
  59. Урок 59.00:05:50
    Scroll to top
  60. Урок 60.00:03:37
    Summary of section 6
  61. Урок 61.00:02:51
    Introduction
  62. Урок 62.00:10:13
    Setting up Formik
  63. Урок 63.00:05:08
    Formik with less code
  64. Урок 64.00:05:40
    Form validation
  65. Урок 65.00:06:28
    Creating a reusable text input
  66. Урок 66.00:04:41
    Cleaning up the form
  67. Урок 67.00:02:07
    Creating a reusable text area
  68. Урок 68.00:07:40
    Creating a reusable select input
  69. Урок 69.00:10:18
    Creating a reusable date input
  70. Урок 70.00:07:50
    Date-FNS
  71. Урок 71.00:05:06
    Formik props
  72. Урок 72.00:09:42
    Modals
  73. Урок 73.00:09:44
    Adding a Modal Manager
  74. Урок 74.00:08:47
    Creating the sign up form
  75. Урок 75.00:05:14
    Adding an auth reducer
  76. Урок 76.00:08:11
    Hooking up the sign up form
  77. Урок 77.00:02:08
    Summary of section 7
  78. Урок 78.00:07:15
    Introduction
  79. Урок 79.00:07:08
    Getting the Google API keys
  80. Урок 80.00:08:28
    Setting up places autocomplete
  81. Урок 81.00:12:40
    Creating a custom place input
  82. Урок 82.00:09:37
    Using the place input
  83. Урок 83.00:05:57
    Narrowing the place input search results
  84. Урок 84.00:06:04
    Google maps react
  85. Урок 85.00:05:17
    Challenge solution
  86. Урок 86.00:07:17
    Adding the map to the Event Detailed Page
  87. Урок 87.00:02:20
    Summary of section 8
  88. Урок 88.00:04:45
    Introduction
  89. Урок 89.00:06:37
    Redux Thunk 101
  90. Урок 90.00:07:48
    Redux Thunk 102
  91. Урок 91.00:03:21
    Isolating the loading indicators
  92. Урок 92.00:04:52
    Adding toast notifications
  93. Урок 93.00:07:10
    Adding a mock API
  94. Урок 94.00:03:17
    Adding a loading component
  95. Урок 95.00:04:00
    Using placeholders to improve the UI
  96. Урок 96.00:06:04
    Adding an event filters component
  97. Урок 97.00:03:58
    Summary of section 9
  98. Урок 98.00:06:50
    Introduction
  99. Урок 99.00:06:29
    Setting up Firestore
  100. Урок 100.00:11:56
    Firestore document fields
  101. Урок 101.00:06:57
    Listening to Firestore data
  102. Урок 102.00:09:30
    Shaping the Firestore data
  103. Урок 103.00:03:32
    Restoring the loading indicator
  104. Урок 104.00:09:04
    Creating a custom hook
  105. Урок 105.00:11:01
    Adding a useFirestoreDoc hook
  106. Урок 106.00:05:50
    Handling not found documents
  107. Урок 107.00:05:02
    Adding an error component
  108. Урок 108.00:10:36
    Creating and updating events in Firestore
  109. Урок 109.00:05:27
    Creating and updating events in Firestore part 2
  110. Урок 110.00:03:46
    Deleting an event
  111. Урок 111.00:05:44
    Cancelling an event function
  112. Урок 112.00:06:42
    Adding a confirmation prompt
  113. Урок 113.00:03:28
    Summary of section 10
  114. Урок 114.00:02:13
    Introduction
  115. Урок 115.00:06:52
    Logging in
  116. Урок 116.00:09:19
    Persisting the login
  117. Урок 117.00:04:01
    Signing out the user
  118. Урок 118.00:07:02
    Registering new users
  119. Урок 119.00:06:21
    Handling auth errors
  120. Урок 120.00:05:02
    Setting user profile data
  121. Урок 121.00:03:47
    Creating a social login component
  122. Урок 122.00:06:18
    Facebook login
  123. Урок 123.00:11:20
    Adding the facebook login method
  124. Урок 124.00:01:58
    Adding Google login
  125. Урок 125.00:09:11
    Adding an account page
  126. Урок 126.00:07:52
    Adding additional user info into the auth reducer
  127. Урок 127.00:06:27
    Adding a password change function
  128. Урок 128.00:08:13
    App initialization
  129. Урок 129.00:03:20
    Summary of section 11
  130. Урок 130.00:01:08
    Introduction
  131. Урок 131.00:07:48
    Adding a profile page
  132. Урок 132.00:03:12
    Adding the profile content
  133. Урок 133.00:03:44
    Creating the redux actions
  134. Урок 134.00:07:45
    Connecting the profile page to the store
  135. Урок 135.00:06:04
    Adding an about page
  136. Урок 136.00:06:20
    Adding the profile form
  137. Урок 137.00:05:53
    Adding the update user actions
  138. Урок 138.00:05:45
    Initializing the app with the current user profile
  139. Урок 139.00:05:32
    Selecting other user profiles
  140. Урок 140.00:01:35
    Summary of section 12
  141. Урок 141.00:02:45
    Introduction
  142. Урок 142.00:04:28
    Adding a profile photos page
  143. Урок 143.00:03:53
    Adding a photo upload widget
  144. Урок 144.00:09:20
    React dropzone
  145. Урок 145.00:12:14
    React cropper
  146. Урок 146.00:07:17
    Adding an upload image method
  147. Урок 147.00:13:00
    Using the upload method in the widget
  148. Урок 148.00:06:01
    Displaying the images
  149. Урок 149.00:06:02
    Setting the main photo
  150. Урок 150.00:08:48
    Deleting a photo
  151. Урок 151.00:03:05
    Summary of section 13
  152. Урок 152.00:01:54
    Introduction
  153. Урок 153.00:11:09
    Firestore Database design
  154. Урок 154.00:05:30
    Adding attendances to an event
  155. Урок 155.00:08:57
    Setting up the event detailed header
  156. Урок 156.00:03:43
    Adding the join event handler
  157. Урок 157.00:05:21
    Cancelling a user attendance
  158. Урок 158.00:05:06
    Adding the user nav links
  159. Урок 159.00:08:17
    Adding the filter functionality
  160. Урок 160.00:10:41
    Getting the filtered data
  161. Урок 161.00:07:00
    Adding the user event filters
  162. Урок 162.00:03:41
    Adding the user event query
  163. Урок 163.00:11:40
    Adding profile actions for user events
  164. Урок 164.00:03:08
    Summary of section 14
  165. Урок 165.00:01:35
    Introduction
  166. Урок 166.00:03:49
    Setting up firebase
  167. Урок 167.00:06:57
    Setting up the chat form
  168. Урок 168.00:12:21
    Listening to the chat data
  169. Урок 169.00:05:01
    Displaying the comments
  170. Урок 170.00:07:44
    Improving the chat UI
  171. Урок 171.00:04:48
    Clearing the chat comments
  172. Урок 172.00:09:08
    Adding the reply functionality
  173. Урок 173.00:10:18
    Displaying the replies
  174. Урок 174.00:01:53
    Summary of section 15
  175. Урок 175.00:01:52
    Introduction
  176. Урок 176.00:08:13
    Adding the firestore functions
  177. Урок 177.00:04:08
    Unfollow a user
  178. Урок 178.00:03:18
    Listening to the following data
  179. Урок 179.00:04:22
    Adding the following components
  180. Урок 180.00:09:19
    Listening to the followers data
  181. Урок 181.00:07:34
    Updating the following count
  182. Урок 182.00:07:33
    Updating the following user status
  183. Урок 183.00:03:38
    Clearing the followings
  184. Урок 184.00:09:23
    Firestore batches
  185. Урок 185.00:08:15
    Firestore batches part 2
  186. Урок 186.00:04:29
    Cloud functions introduction
  187. Урок 187.00:07:23
    Setting up cloud functions
  188. Урок 188.00:12:10
    Creating our own cloud functions
  189. Урок 189.00:05:38
    Firebase functions logs
  190. Урок 190.00:06:02
    Creating a personalized news feed
  191. Урок 191.00:11:57
    Adding functions for the feed
  192. Урок 192.00:09:17
    Listening to the news feed
  193. Урок 193.00:09:51
    Displaying the news feed events
  194. Урок 194.00:03:40
    Summary of section 16
  195. Урок 195.00:10:39
    Introduction
  196. Урок 196.00:12:39
    Implementing pagination
  197. Урок 197.00:04:10
    Improving the paging UI
  198. Урок 198.00:04:58
    Infinite scroll
  199. Урок 199.00:07:20
    Fixing the event detailed page
  200. Урок 200.00:06:10
    Fixing the event filters
  201. Урок 201.00:03:35
    Dealing with duplicate data
  202. Урок 202.00:11:05
    Implementing data consistency
  203. Урок 203.00:04:46
    Updating security rules
  204. Урок 204.00:01:38
    Summary of section 17
  205. Урок 205.00:02:13
    Introduction
  206. Урок 206.00:05:26
    Checking anonymous access
  207. Урок 207.00:05:54
    Creating a modal to prompt login
  208. Урок 208.00:04:51
    Creating a private route
  209. Урок 209.00:08:07
    Connecting the router to the store
  210. Урок 210.00:03:23
    Redirecting the user with connected router
  211. Урок 211.00:07:04
    Showing the modal on click
  212. Урок 212.00:09:13
    More on Firestore security rules
  213. Урок 213.00:15:08
    Restricting API Key usage
  214. Урок 214.00:01:46
    Summary of section 18
  215. Урок 215.00:02:34
    Introduction
  216. Урок 216.00:09:27
    Optimizing the events
  217. Урок 217.00:08:04
    Optimizing the events part 2
  218. Урок 218.00:04:56
    Optimizing the profiles
  219. Урок 219.00:04:48
    Building the application
  220. Урок 220.00:03:20
    Service worker
  221. Урок 221.00:06:49
    Publishing our app to Firebase
  222. Урок 222.00:12:02
    Resolving issues with the app and redeploying
  223. Урок 223.00:02:39
    End of course summary