Урок 1. 00:01:28
Course promo video (from course home page)
Урок 2. 00:08:09
Setup and creating our first app
Урок 3. 00:07:26
Creating a server
Урок 4. 00:04:35
Rendering content on the web page
Урок 5. 00:03:59
Supporting additional pages
Урок 6. 00:04:49
Adding a routing file
Урок 7. 00:06:32
Handling POST/GET requests (form submissions)
Урок 8. 00:07:51
npm init
Урок 9. 00:04:26
Installing our first npm package
Урок 10. 00:02:44
npm install
Урок 11. 00:02:20
Telling git to ignore node_modules (skip if not using git)
Урок 12. 00:05:39
Setting up our project
Урок 13. 00:05:25
Installing Express
Урок 14. 00:03:28
Rendering some content on the web page
Урок 15. 00:08:16
Creating our first Pug template
Урок 16. 00:02:40
Rendering a dynamic page title
Урок 17. 00:04:23
Extending another pug template file
Урок 18. 00:01:48
Quick html improvements
Урок 19. 00:06:08
Middleware: Redirecting the user if not logged in
Урок 20. 00:07:27
Adding the login route
Урок 21. 00:08:37
Creating the login page
Урок 22. 00:07:01
Adding Bootstrap
Урок 23. 00:07:52
Serving static files
Урок 24. 00:13:59
Login CSS
Урок 25. 00:06:54
Creating the register page
Урок 26. 00:06:27
Checking that the passwords match
Урок 27. 00:05:37
Adding body parser
Урок 28. 00:09:38
Checking for empty fields
Урок 29. 00:06:18
Getting started with MongoDB
Урок 30. 00:10:37
Connecting to the database
Урок 31. 00:09:19
Creating a reusable database connection
Урок 32. 00:09:23
Creating the User Schema (mongoose)
Урок 33. 00:07:38
Checking if username or emails are already in use
Урок 34. 00:04:07
Async and Await explanation
Урок 35. 00:04:59
Checking if the username or email are already in use
Урок 36. 00:05:30
Inserting a user into the collection
Урок 37. 00:03:26
Adding timestamps to our data
Урок 38. 00:06:41
Hashing the password
Урок 39. 00:07:46
Sessions
Урок 40. 00:03:16
Passing the logged in user to the client
Урок 41. 00:13:39
Logging in
Урок 42. 00:09:46
Bootstrap grid intro
Урок 43. 00:08:34
Creatig a responsive layout
Урок 44. 00:04:01
Adding FontAwesome
Урок 45. 00:07:15
Choosing our navigation bar icons
Урок 46. 00:05:39
Styling the navigation bar
Урок 47. 00:07:29
Navigation icon colours
Урок 48. 00:03:28
Logging out
Урок 49. 00:08:52
Adding the page title
Урок 50. 00:09:52
Mixins
Урок 51. 00:04:41
Setting the default profile picture
Урок 52. 00:05:44
Styling the post form container
Урок 53. 00:07:34
Styling the textarea
Урок 54. 00:06:50
Adding a common javascript file
Урок 55. 00:05:32
Getting the entered text from the textbox
Урок 56. 00:03:45
Enabling the submit button when the user types
Урок 57. 00:05:49
Adding a click handler to the post button
Урок 58. 00:05:41
Rest API basic explanation
Урок 59. 00:06:29
Post API route
Урок 60. 00:03:49
Sending a bad request when the data is invalid
Урок 61. 00:05:54
Creating the posts Mongoose schema
Урок 62. 00:10:21
Inserting the post into the database
Урок 63. 00:05:08
Handling the response from the server
Урок 64. 00:06:49
Outputting the post content
Урок 65. 00:05:17
Outputting the user info from the post
Урок 66. 00:08:10
Styling the post body
Урок 67. 00:09:18
Styling the comment, retweet and like buttons
Урок 68. 00:05:02
Hover styles of the comment, retweet and like buttons
Урок 69. 00:04:57
Creating the home page JavaScript file
Урок 70. 00:06:19
Getting posts from the database
Урок 71. 00:05:35
Outputting posts on the page
Урок 72. 00:04:19
Populating the posted by data
Урок 73. 00:02:11
Populating our login details to save us time
Урок 74. 00:05:55
Calculating the timestamp of the posts
Урок 75. 00:01:02
Ordering the posts by newest first
Урок 76. 00:02:51
Adding the likes field to the schemas
Урок 77. 00:03:51
Like button click handler
Урок 78. 00:09:10
Getting the post id from the clicked element
Урок 79. 00:03:38
Rest API request types overview
Урок 80. 00:06:16
Making a PUT request
Урок 81. 00:05:30
Checking if if the user has already like the post
Урок 82. 00:09:04
Inserting the like
Урок 83. 00:04:41
Unliking posts
Урок 84. 00:03:09
Returning the like result to the client
Урок 85. 00:06:52
Updating the button to show the new number of likes
Урок 86. 00:05:41
Passing the user logged in info to the client
Урок 87. 00:06:35
Changing button colour when post is liked
Урок 88. 00:01:48
Showing correct button colour when page loads
Урок 89. 00:04:34
Setting up the retweet route
Урок 90. 00:06:40
Adding the retweet fields to the schema
Урок 91. 00:06:28
Retweeting posts
Урок 92. 00:02:27
Retweeting posts - Fix
Урок 93. 00:07:17
Showing the number of retweets next to the button
Урок 94. 00:01:23
Setting retweet button colour when page is loaded
Урок 95. 00:08:00
Rendering the retweet
Урок 96. 00:03:05
Populating the retweet's postedBy field
Урок 97. 00:05:59
Adding the retweet message indicator
Урок 98. 00:07:11
Opening the reply modal popup
Урок 99. 00:03:05
Adding the post form in the modal
Урок 100. 00:03:20
Enabling the submit reply button when the user types
Урок 101. 00:07:13
Making the request to get the post when modal opens
Урок 102. 00:05:05
Refactoring the get posts function
Урок 103. 00:05:13
Getting a single post by ID
Урок 104. 00:04:56
Outputting the post into the reply modal
Урок 105. 00:04:21
Clearing the reply modal when it is closed
Урок 106. 00:09:38
Sending the reply to the server
Урок 107. 00:02:42
Inserting the reply into the database
Урок 108. 00:02:22
Reloading the page after a reply is submitted
Урок 109. 00:08:34
Outputting the reply
Урок 110. 00:03:52
Sending the user to the posts page on click
Урок 111. 00:06:34
Creating the posts route
Урок 112. 00:03:42
Loading the post on the post page
Урок 113. 00:10:55
Loading the replies to the post on the post page
Урок 114. 00:02:28
Fixing a bug in the replies
Урок 115. 00:06:27
Large font size for the post we're viewing
Урок 116. 00:11:30
Adding the delete button to our own posts
Урок 117. 00:02:37
Styling the delete button
Урок 118. 00:03:28
Getting the id of the post we want to delete
Урок 119. 00:06:10
Making the ajax call to delete a post
Урок 120. 00:06:20
Deleting the post
Урок 121. 00:03:16
Creating the profile route file
Урок 122. 00:03:02
Creating the profile page pug file
Урок 123. 00:08:11
Accessing the profile page by username
Урок 124. 00:03:03
User not found error message
Урок 125. 00:03:15
Accessing the profile page by ID
Урок 126. 00:08:23
Styling the profile image + cover photo
Урок 127. 00:08:19
Message button style
Урок 128. 00:05:52
Styling the follow button
Урок 129. 00:05:00
Outputting the user details
Урок 130. 00:04:49
Styling the user details
Урок 131. 00:07:49
Creating the profile tabs
Урок 132. 00:05:11
Loading posts on the profile page
Урок 133. 00:07:41
Including/excluding the replies
Урок 134. 00:06:38
Implementing the replies tab
Урок 135. 00:04:10
Following and followers schema changes
Урок 136. 00:05:46
Getting the user ID when we press the follow button
Урок 137. 00:05:42
Creating the follow endpoint
Урок 138. 00:06:00
Checking if the user is already following the person
Урок 139. 00:06:51
Following and unfollowing the user
Урок 140. 00:08:23
Updating the button when we follow/unfollow a user
Урок 141. 00:00:53
Updating the text of the button when we follow/unfollow a user
Урок 142. 00:07:22
Updating the following/followers count
Урок 143. 00:04:32
Creating the following/followers page
Урок 144. 00:09:15
Getting the following/followers data from the database
Урок 145. 00:08:06
Outputting the users
Урок 146. 00:02:56
Styling the users list
Урок 147. 00:05:22
Adding the follow button to the user list
Урок 148. 00:06:03
Only showing posts from people we're following
Урок 149. 00:03:15
Following count bug fix
Урок 150. 00:05:29
Adding the profile picture upload button
Урок 151. 00:02:55
Creating the image upload modal
Урок 152. 00:04:02
Adding Cropper JS (the cropping library)
Урок 153. 00:09:45
Loading the image preview into the modal
Урок 154. 00:06:38
Adding the cropper functionality
Урок 155. 00:04:47
Converting the image upload data to a blob
Урок 156. 00:03:57
Image upload ajax call
Урок 157. 00:09:21
Accessing the image on the server
Урок 158. 00:06:42
Storing the uploaded image in the correct location
Урок 159. 00:11:09
Updating the user's profile picture in the database
Урок 160. 00:06:56
Adding the upload button to the cover photo section
Урок 161. 00:02:21
Cover photo upload modal popup
Урок 162. 00:02:32
Cover photo cropping
Урок 163. 00:07:02
Uploading the cover photo
Урок 164. 00:05:42
Pin post modal
Урок 165. 00:09:15
Pinning posts
Урок 166. 00:02:57
Changing the icon colour for the pinned post
Урок 167. 00:03:01
Pinned post label
Урок 168. 00:07:30
Displaying the pinned post on the profile
Урок 169. 00:06:01
Unpinning posts
Урок 170. 00:08:02
Creating the search page
Урок 171. 00:06:56
Styling the search box
Урок 172. 00:08:17
Creating the search timer
Урок 173. 00:06:18
Searching for posts
Урок 174. 00:02:04
Outputting the search posts
Урок 175. 00:06:21
Searching for users
Урок 176. 00:02:31
Outputting the search users
Урок 177. 00:07:24
Creating the inbox page routes
Урок 178. 00:03:34
Creating the new message button
Урок 179. 00:03:05
New message page elements
Урок 180. 00:07:26
Styling the new message page elements
Урок 181. 00:06:11
Adding the user search timer
Урок 182. 00:05:20
Output selectable users
Урок 183. 00:06:36
Selecting users
Урок 184. 00:03:15
Leaving selected users out of the search results
Урок 185. 00:05:12
Outputting the selected users
Урок 186. 00:04:15
Styling the selected users
Урок 187. 00:07:32
Removing the selected user
Урок 188. 00:05:40
Creating the chat schema
Урок 189. 00:06:12
Creating the chat routes
Урок 190. 00:07:08
Creating chats
Урок 191. 00:07:02
Getting the chats
Урок 192. 00:05:35
Outputting the chat elements
Урок 193. 00:03:33
Styling the chat items
Урок 194. 00:07:11
Getting the chat name
Урок 195. 00:06:46
Showing the chat images
Урок 196. 00:05:37
Styling the chat images
Урок 197. 00:03:16
Ellipsis for overflowing text
Урок 198. 00:02:21
Creating the chat page
Урок 199. 00:05:56
Getting the chat data for the page
Урок 200. 00:06:48
Checking that the chat exists
Урок 201. 00:10:47
Accessing the chat by user ID
Урок 202. 00:01:31
Sorting the chats by most recent first
Урок 203. 00:03:02
Adding the chat page elements
Урок 204. 00:04:26
Making the page take up the fill window height
Урок 205. 00:04:36
Styling the chat title bar
Урок 206. 00:05:15
Styling the message text box
Урок 207. 00:03:47
Styling the chat messages container
Урок 208. 00:03:10
Group chat images
Урок 209. 00:03:44
Styling the group chat images
Урок 210. 00:10:47
Limiting the number of displayed chat images
Урок 211. 00:04:11
Adding the chat name modal popup
Урок 212. 00:03:56
Making the ajax call to change the name
Урок 213. 00:03:30
Updating the chat name in the database
Урок 214. 00:06:01
Get chat route
Урок 215. 00:02:09
Get chat data by chat ID
Урок 216. 00:06:21
Message submitted event handlers
Урок 217. 00:03:22
Send message function
Урок 218. 00:04:26
Creating the message schema
Урок 219. 00:05:50
Sending the message to the database
Урок 220. 00:07:13
Creating the message html
Урок 221. 00:04:23
Adding the main style for the messages
Урок 222. 00:06:05
Styling our own messages
Урок 223. 00:03:23
Handling a send message failure
Урок 224. 00:07:47
Outputting the latest message
Урок 225. 00:04:01
Getting the messages from the database
Урок 226. 00:04:33
Outputting all the chat messages
Урок 227. 00:08:33
Adding classes to the first and last messages in a group of messages
Урок 228. 00:04:01
Setting the border radius of our messages
Урок 229. 00:02:25
Setting the border radius of their messages
Урок 230. 00:04:09
Outputting the sender name
Урок 231. 00:05:33
Outputting the sender profile picture
Урок 232. 00:01:59
Fixing a bug in the scrolling of messages
Урок 233. 00:05:42
Scrolling messages to the bottom automatically
Урок 234. 00:06:09
Showing a loading spinner while messages are loading
Урок 235. 00:03:54
Installing socket io
Урок 236. 00:04:28
Connecting to socket io from the client
Урок 237. 00:09:37
Creating our setup socket event handler
Урок 238. 00:03:35
Joining a chat room
Урок 239. 00:06:43
Sending typing notifications
Урок 240. 00:01:54
Safari messages bug fix
Урок 241. 00:05:35
Showing the typing dots gif when user is typing
Урок 242. 00:09:08
Hiding the typing dots when the user stops typing
Урок 243. 00:01:25
Hiding the typing dots when a message is sent
Урок 244. 00:05:39
Sending a new message event
Урок 245. 00:06:52
Handling incoming messages
Урок 246. 00:03:22
Creating the notification page
Урок 247. 00:05:00
Creating the notification schema
Урок 248. 00:05:57
Inserting notifications
Урок 249. 00:04:29
Sending a follow notification
Урок 250. 00:09:38
Sending notifications for likes, retweets and replies
Урок 251. 00:08:45
Sending notifications for messages
Урок 252. 00:03:41
Creating the notifications api route
Урок 253. 00:07:24
Retrieving notifications from the database
Урок 254. 00:07:21
Creating the notifications html
Урок 255. 00:06:00
Creating the notification text
Урок 256. 00:04:20
Creating the notification links
Урок 257. 00:02:10
Setting the active class on the notifications
Урок 258. 00:06:54
Marking a notification as opened
Урок 259. 00:10:49
Notification click handlers
Урок 260. 00:04:10
Marking all notifications as read
Урок 261. 00:06:25
Adding the notifications/messages badge to the nav bar
Урок 262. 00:05:27
Getting the number of unread chats
Урок 263. 00:01:52
Adding the number to the unread messages badge
Урок 264. 00:06:12
Adding the number to the unread notifications badge
Урок 265. 00:06:24
Sending the notification socket event
Урок 266. 00:03:07
Handling incoming notifications
Урок 267. 00:06:10
Outputting the popup notification
Урок 268. 00:05:27
Styling the popup notification list
Урок 269. 00:02:16
Making the notifications slide into view
Урок 270. 00:05:07
Outputting the popup messages
Урок 271. 00:06:06
Marking all messages as read
Урок 272. 00:03:50
Making unread messages have a blue background
Урок 273. 00:03:27
Incoming message fix