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