Урок 1.00:06:46
Course Structure and Projects
Урок 2.00:05:26
Let's Install Node.js
Урок 3.00:00:56
Section Intro
Урок 4.00:07:40
What Is Node.js and Why Use It?
Урок 5.00:06:28
Running Javascript Outside the Browser
Урок 6.00:06:00
Using Modules 1: Core Modules
Урок 7.00:07:29
Reading and Writing Files
Урок 8.00:10:14
Blocking and Non-Blocking: Asynchronous Nature of Node.js
Урок 9.00:14:17
Reading and Writing Files Asynchronously
Урок 10.00:12:51
Creating a Simple Web Server
Урок 11.00:15:19
Routing
Урок 12.00:14:29
Building a (Very) Simple API
Урок 13.00:14:04
HTML Templating: Building the Templates
Урок 14.00:20:47
HTML Templating: Filling the Templates
Урок 15.00:10:24
Parsing Variables from URLs
Урок 16.00:06:35
Using Modules 2: Our Own Modules
Урок 17.00:05:18
Introduction to NPM and the package.json File
Урок 18.00:13:40
Types of Packages and Installs
Урок 19.00:07:56
Using Modules 3: 3rd Party Modules
Урок 20.00:11:46
Package Versioning and Updating
Урок 21.00:11:28
Setting up Prettier in VS Code
Урок 22.00:02:58
Recap and What's Next
Урок 23.00:00:47
Section Intro
Урок 24.00:13:29
An Overview of How the Web Works
Урок 25.00:05:30
HTTP in Action
Урок 26.00:06:03
Front-End vs. Back-End Web Development
Урок 27.00:09:16
Static vs Dynamic vs API
Урок 28.00:01:25
Section Intro
Урок 29.00:03:48
Node, V8, Libuv and C++
Урок 30.00:04:22
Processes, Threads and the Thread Pool
Урок 31.00:11:34
The Node.js Event Loop
Урок 32.00:18:51
The Event Loop in Practice
Урок 33.00:04:19
Events and Event-Driven Architecture
Урок 34.00:13:55
Events in Practice
Урок 35.00:06:18
Introduction to Streams
Урок 36.00:16:07
Streams in Practice
Урок 37.00:09:40
How Requiring Modules Really Works
Урок 38.00:15:52
Requiring Modules in Practice
Урок 39.00:00:58
Section Intro
Урок 40.00:12:47
The Problem with Callbacks: Callback Hell
Урок 41.00:06:44
From Callback Hell to Promises
Урок 42.00:14:43
Building Promises
Урок 43.00:07:49
Consuming Promises with Async/Await
Урок 44.00:13:04
Returning Values from Async Functions
Урок 45.00:06:12
Waiting for Multiple Promises Simultaneously
Урок 46.00:00:57
Section Intro
Урок 47.00:02:02
What is Express?
Урок 48.00:03:27
Installing Postman
Урок 49.00:14:49
Setting up Express and Basic Routing
Урок 50.00:16:08
APIs and RESTful API Design
Урок 51.00:12:20
Starting Our API: Handling GET Requests
Урок 52.00:15:22
Handling POST Requests
Урок 53.00:11:49
Responding to URL Parameters
Урок 54.00:07:06
Handling PATCH Requests
Урок 55.00:02:41
Handling DELETE Requests
Урок 56.00:06:48
Refactoring Our Routes
Урок 57.00:04:49
Middleware and the Request-Response Cycle
Урок 58.00:09:06
Creating Our Own Middleware
Урок 59.00:09:36
Using 3rd-Party Middleware
Урок 60.00:06:58
Implementing the "Users" Routes
Урок 61.00:08:05
Creating and Mounting Multiple Routers
Урок 62.00:18:21
A Better File Structure
Урок 63.00:10:55
Param Middleware
Урок 64.00:07:35
Chaining Multiple Middleware Functions
Урок 65.00:05:28
Serving Static Files
Урок 66.00:16:40
Environment Variables
Урок 67.00:13:34
Setting up ESLint + Prettier in VS Code
Урок 68.00:00:49
Section Intro
Урок 69.00:08:45
What is MongoDB?
Урок 70.00:06:35
[OPTIONAL] Installing MongoDB on macOS
Урок 71.00:10:03
[OPTIONAL] Installing MongoDB on Windows
Урок 72.00:07:40
[OPTIONAL] Creating a Local Database
Урок 73.00:04:18
[OPTIONAL] CRUD: Creating Documents
Урок 74.00:12:27
[OPTIONAL] CRUD: Querying (Reading) Documents
Урок 75.00:07:51
[OPTIONAL] CRUD: Updating Documents
Урок 76.00:02:48
[OPTIONAL] CRUD: Deleting Documents
Урок 77.00:07:12
Using Compass App for CRUD Operations
Урок 78.00:04:28
Creating a Hosted Database with Atlas
Урок 79.00:07:36
Connecting to Our Hosted Database
Урок 80.00:00:57
Section Intro
Урок 81.00:12:25
Connecting Our Database with the Express App
Урок 82.00:01:54
What Is Mongoose?
Урок 83.00:07:02
Creating a Simple Tour Model
Урок 84.00:09:04
Creating Documents and Testing the Model
Урок 85.00:06:55
Intro to Back-End Architecture: MVC, Types of Logic, and More
Урок 86.00:06:32
Refactoring for MVC
Урок 87.00:13:54
Another Way of Creating Documents
Урок 88.00:08:36
Reading Documents
Урок 89.00:10:52
Updating Documents
Урок 90.00:04:10
Deleting Documents
Урок 91.00:18:14
Modelling the Tours
Урок 92.00:15:41
Importing Development Data
Урок 93.00:18:46
Making the API Better: Filtering
Урок 94.00:12:05
Making the API Better: Advanced Filtering
Урок 95.00:11:01
Making the API Better: Sorting
Урок 96.00:06:20
Making the API Better: Limiting Fields
Урок 97.00:15:00
Making the API Better: Pagination
Урок 98.00:08:57
Making the API Better: Aliasing
Урок 99.00:15:39
Refactoring API Features
Урок 100.00:20:38
Aggregation Pipeline: Matching and Grouping
Урок 101.00:19:29
Aggregation Pipeline: Unwinding and Projecting
Урок 102.00:06:24
Virtual Properties
Урок 103.00:14:30
Document Middleware
Урок 104.00:13:55
Query Middleware
Урок 105.00:07:43
Aggregation Middleware
Урок 106.00:10:07
Data Validation: Built-In Validators
Урок 107.00:14:03
Data Validation: Custom Validators
Урок 108.00:00:42
Section Intro
Урок 109.00:20:30
Debugging Node.js with ndb
Урок 110.00:07:51
Handling Unhandled Routes
Урок 111.00:03:37
An Overview of Error Handling
Урок 112.00:09:00
Implementing a Global Error Handling Middleware
Урок 113.00:11:14
Better Errors and Refactoring
Урок 114.00:14:55
Catching Errors in Async Functions
Урок 115.00:09:07
Adding 404 Not Found Errors
Урок 116.00:10:31
Errors During Development vs Production
Урок 117.00:09:43
Handling Invalid Database IDs
Урок 118.00:06:05
Handling Duplicate Database Fields
Урок 119.00:08:25
Handling Mongoose Validation Errors
Урок 120.00:08:50
Errors Outside Express: Unhandled Rejections
Урок 121.00:09:17
Catching Uncaught Exceptions
Урок 122.00:00:59
Section Intro
Урок 123.00:10:01
Modelling Users
Урок 124.00:11:20
Creating New Users
Урок 125.00:18:25
Managing Passwords
Урок 126.00:08:47
How Authentication with JWT Works
Урок 127.00:16:02
Signing up Users
Урок 128.00:26:36
Logging in Users
Урок 129.00:14:58
Protecting Tour Routes - Part 1
Урок 130.00:35:15
Protecting Tour Routes - Part 2
Урок 131.00:11:36
Advanced Postman Setup
Урок 132.00:15:55
Authorization: User Roles and Permissions
Урок 133.00:17:04
Password Reset Functionality: Reset Token
Урок 134.00:23:05
Sending Emails with Nodemailer
Урок 135.00:21:34
Password Reset Functionality: Setting New Password
Урок 136.00:16:37
Updating the Current User: Password
Урок 137.00:20:12
Updating the Current User: Data
Урок 138.00:10:29
Deleting the Current User
Урок 139.00:10:14
Security Best Practices
Урок 140.00:09:47
Sending JWT via Cookie
Урок 141.00:07:05
Implementing Rate Limiting
Урок 142.00:05:20
Setting Security HTTP Headers
Урок 143.00:09:16
Data Sanitization
Урок 144.00:08:21
Preventing Parameter Pollution
Урок 145.00:01:03
Section Intro
Урок 146.00:24:40
MongoDB Data Modelling
Урок 147.00:10:58
Designing Our Data Model
Урок 148.00:12:26
Modelling Locations (Geospatial Data)
Урок 149.00:07:49
Modelling Tour Guides: Embedding
Урок 150.00:04:57
Modelling Tour Guides: Child Referencing
Урок 151.00:10:43
Populating Tour Guides
Урок 152.00:08:32
Modelling Reviews: Parent Referencing
Урок 153.00:17:04
Creating and Getting Reviews
Урок 154.00:06:07
Populating Reviews
Урок 155.00:12:03
Virtual Populate: Tours and Reviews
Урок 156.00:13:30
Implementing Simple Nested Routes
Урок 157.00:08:01
Nested Routes with Express
Урок 158.00:05:07
Adding a Nested GET Endpoint
Урок 159.00:14:22
Building Handler Factory Functions: Delete
Урок 160.00:13:23
Factory Functions: Update and Create
Урок 161.00:14:43
Factory Functions: Reading
Урок 162.00:04:43
Adding a /me Endpoint
Урок 163.00:14:45
Adding Missing Authentication and Authorization
Урок 164.00:07:27
Importing Review and User Data
Урок 165.00:16:12
Improving Read Performance with Indexes
Урок 166.00:22:26
Calculating Average Rating on Tours - Part 1
Урок 167.00:15:58
Calculating Average Rating on Tours - Part 2
Урок 168.00:09:30
Preventing Duplicate Reviews
Урок 169.00:29:54
Geospatial Queries: Finding Tours Within Radius
Урок 170.00:16:29
Geospatial Aggregation: Calculating Distances
Урок 171.00:10:38
Creating API Documentation Using Postman
Урок 172.00:00:57
Section Intro
Урок 173.00:05:17
Recap: Server-Side vs Client-Side Rendering
Урок 174.00:10:09
Setting up Pug in Express
Урок 175.00:14:38
First Steps with Pug
Урок 176.00:15:25
Creating Our Base Template
Урок 177.00:04:46
Including Files into Pug Templates
Урок 178.00:10:07
Extending Our Base Template with Blocks
Урок 179.00:05:58
Setting up the Project Structure
Урок 180.00:11:38
Building the Tour Overview - Part 1
Урок 181.00:15:54
Building the Tour Overview - Part 2
Урок 182.00:20:29
Building the Tour Page - Part 1
Урок 183.00:25:51
Building the Tour Page - Part 2
Урок 184.00:11:34
Including a Map with Mapbox - Part 1
Урок 185.00:27:52
Including a Map with Mapbox - Part 2
Урок 186.00:06:31
Building the Login Screen
Урок 187.00:20:54
Logging in Users with Our API - Part 1
Урок 188.00:18:40
Logging in Users with Our API - Part 2
Урок 189.00:28:16
Logging in Users with Our API - Part 3
Урок 190.00:13:57
Logging out Users
Урок 191.00:21:46
Rendering Error Pages
Урок 192.00:16:06
Building the User Account Page
Урок 193.00:17:08
Updating User Data
Урок 194.00:12:35
Updating User Data with Our API
Урок 195.00:14:43
Updating User Password with Our API
Урок 196.00:00:33
Section Intro
Урок 197.00:10:13
Image Uploads Using Multer: Users
Урок 198.00:13:47
Configuring Multer
Урок 199.00:05:33
Saving Image Name to Database
Урок 200.00:13:20
Resizing Images
Урок 201.00:11:34
Adding Image Uploads to Form
Урок 202.00:12:03
Uploading Multiple Images: Tours
Урок 203.00:18:12
Processing Multiple Images
Урок 204.00:19:59
Building a Complex Email Handler
Урок 205.00:15:09
Email Templates with Pug: Welcome Emails
Урок 206.00:07:08
Sending Password Reset Emails
Урок 207.00:09:33
Using Sendgrid for "Real" Emails
Урок 208.00:10:09
Credit Card Payments with Stripe
Урок 209.00:22:35
Integrating Stripe into the Back-End
Урок 210.00:23:05
Processing Payments on the Front-End
Урок 211.00:06:24
Modelling the Bookings
Урок 212.00:19:09
Creating New Bookings on Checkout Success
Урок 213.00:11:17
Rendering a User's Booked Tours
Урок 214.00:07:13
Finishing the Bookings API
Урок 215.00:07:29
Final Considerations
Урок 216.00:00:41
Section Intro
Урок 217.00:04:39
Setting Up Git and GitHub
Урок 218.00:10:34
Git Fundamentals
Урок 219.00:10:29
Pushing to GitHub
Урок 220.00:10:56
Preparing Our App for Deployment
Урок 221.00:26:31
Deploying Our App to Heroku
Урок 222.00:05:53
Testing for Secure HTTPS Connections
Урок 223.00:07:22
Responding to a SIGTERM Signal
Урок 224.00:15:54
Implementing CORS
Урок 225.00:38:09
Finishing Payments with Stripe Webhooks
Урок 226.00:03:40
Where to Go from Here
kllk