Node.js, Express, MongoDB & More: The Complete Bootcamp 2020

Node.js, Express, MongoDB & More: The Complete Bootcamp 2020

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 42 Hours | 19.7 GB

Master Node by building a real-world RESTful API and web app (with authentication, Node.js security, payments & more)

Do you want to build fast and powerful back-end applications with JavaScript? Would you like to become a more complete and in-demand developer?

Then Node.js is the hot technology for you to learn right now, and you came to the right place to do it!

Welcome to the Complete Node.js, Express and MongoDB Bootcamp, your fast track to modern back-end development.

This course is the perfect all-in-one package that will take you from a complete beginner to an advanced, highly-skilled Node.js developer.

Like all my other courses, this one is completely project based! And not just any project: it’s a complete, beautiful and feature-rich application, containing both a RESTful API and a server-side rendered website. It’s the most fantastic and complete project that you will find in any Node.js course on the internet!

By building this huge project, you will learn all the skills that you need in order to plan, build and deploy your own modern back-end applications with Node.js and related technologies.

After finishing this course, you will:

1) Be building you own fast, scalable and powerful Node.js RESTful APIs or web applications;

2) Truly understand how Node.js works behind the scenes;

3) Be able to work with NoSQL data and model data in real-world situations (a hugely important skill);

4) Know how modern back-end development works, and how all the different technologies fit together (hard to understand from scattered tutorials and videos);

5) Have experience in professionally-used tools and libraries like Express, Mongoose, Stripe, Sendgrid, Atlas, Compass, Git, Heroku, and many more;

6) Have built a complete application, which is a perfect starting point for your own applications in the future.

Please note that this course is NOT for absolute web development beginners, so you should already be familiar with basic JavaScript. NO back-end experience required though!

It’s an absolutely full-packed, deep-dive course with over 40 hours of content!

Since this is the “Complete Node.js Bootcamp”, the course is crammed with tons of different technologies, techniques, and tools, so that you walk away from the course as a complete Node.js developer.

That’s why the course turned out to be over 40 hours long. But if that sound like too much for you, don’t worry, there are videos or entire sections that you can safely skip.

Here is exactly what you’re gonna learn:

  • Fundamentals of Node.js, core modules and NPM (Node Package Manager)
  • How Node.js works behind the scenes: event loop, blocking vs non-blocking code, event-driven architecture, streams, modules, etc.
  • Fundamentals of Express (Node.js framework): routing, middleware, sending responses, etc.
  • RESTful API design and development with advanced features: filtering, sorting, aliasing, pagination
  • Server-side website rendering (HTML) with Pug templates
  • CRUD operations with MongoDB database locally and on the Atlas platform (in the cloud)
  • Advanced MongoDB: geospatial queries, aggregation pipeline, and operators
  • Fundamentals of Mongoose (MongoDB JS driver): Data models, CRUD operations, data validation, and middleware
  • Advanced Mongoose features: modeling geospatial data, populates, virtual populates, indexes, etc.
  • Using the MVC (Model-View-Controller) architecture
  • How to work with data in NoSQL databases
  • Advanced data modelling: relationships between data, embedding, referencing, and more
  • Complete modern authentication with JWT: user sign up, log in, password reset, secure cookies, etc.
  • Authorization (user roles)
  • Security: best practices, encryption, sanitization, rate limiting, etc.
  • Accepting credit card payments with Stripe: Complete integration on the back-end and front-end
  • Uploading files and image processing
  • Sending emails with Mailtrap and Sendgrid
  • Advanced error handling workflows
  • Deploying Node.js application to production with Heroku
  • Git and GitHub crash course
  • And so much more!
Table of Contents

Welcome, Welcome, Welcome!
1 Course Structure and Projects
3 Let’s Install Node.js

Introduction to Node.js and NPM
4 Section Intro
5 Building a (Very) Simple API
6 HTML Templating Building the Templates
7 HTML Templating Filling the Templates
8 Parsing Variables from URLs
9 Using Modules 2 Our Own Modules
10 Introduction to NPM and the package.json File
11 Types of Packages and Installs
12 Using Modules 3 3rd Party Modules
13 Package Versioning and Updating
14 Setting up Prettier in VS Code
15 What Is Node.js and Why Use It
16 Recap and What’s Next
17 Running Javascript Outside the Browser
18 Using Modules 1 Core Modules
19 Reading and Writing Files
20 Blocking and Non-Blocking Asynchronous Nature of Node.js
21 Reading and Writing Files Asynchronously
22 Creating a Simple Web Server
23 Routing

Introduction to Back-End Web Development
24 Section Intro
25 An Overview of How the Web Works
26 HTTP in Action
27 Front-End vs. Back-End Web Development
28 Static vs Dynamic vs API

How Node.js Works A Look Behind the Scenes
29 Section Intro
30 How Requiring Modules Really Works
31 Requiring Modules in Practice
32 Node, V8, Libuv and C++
33 Processes, Threads and the Thread Pool
34 The Node.js Event Loop
35 The Event Loop in Practice
36 Events and Event-Driven Architecture
37 Events in Practice
38 Introduction to Streams
39 Streams in Practice

[Optional] Asynchronous JavaScript Promises and AsyncAwait
40 Section Intro
41 The Problem with Callbacks Callback Hell
42 From Callback Hell to Promises
43 Building Promises
44 Consuming Promises with AsyncAwait
45 Returning Values from Async Functions
46 Waiting for Multiple Promises Simultaneously

Express Let’s Start Building the Natours API!
47 Section Intro
48 Handling DELETE Requests
49 Refactoring Our Routes
50 Middleware and the Request-Response Cycle
51 Creating Our Own Middleware
52 Using 3rd-Party Middleware
53 Implementing the Users Routes
54 Creating and Mounting Multiple Routers
55 A Better File Structure
56 Param Middleware
57 Chaining Multiple Middleware Functions
58 What is Express
59 Serving Static Files
60 Environment Variables
61 Setting up ESLint + Prettier in VS Code
62 Installing Postman
63 Setting up Express and Basic Routing
64 APIs and RESTful API Design
65 Starting Our API Handling GET Requests
66 Handling POST Requests
67 Responding to URL Parameters
68 Handling PATCH Requests

Introduction to MongoDB
69 Section Intro
70 Using Compass App for CRUD Operations
71 Creating a Hosted Database with Atlas
72 Connecting to Our Hosted Database
73 What is MongoDB
74 Installing MongoDB on macOS
75 Installing MongoDB on Windows
76 Creating a Local Database
77 CRUD Creating Documents
78 CRUD Querying (Reading) Documents
79 CRUD Updating Documents
80 CRUD Deleting Documents

Using MongoDB with Mongoose
81 Section Intro
82 Updating Documents
83 Deleting Documents
84 Modelling the Tours
85 Importing Development Data
86 Making the API Better Filtering
87 Making the API Better Advanced Filtering
88 Making the API Better Sorting
89 Making the API Better Limiting Fields
90 Making the API Better Pagination
91 Making the API Better Aliasing
92 Connecting Our Database with the Express App
93 Refactoring API Features
94 Aggregation Pipeline Matching and Grouping
95 Aggregation Pipeline Unwinding and Projecting
96 Virtual Properties
97 Document Middleware
98 Query Middleware
99 Aggregation Middleware
100 Data Validation Built-In Validators
101 Data Validation Custom Validators
102 What Is Mongoose
103 Creating a Simple Tour Model
104 Creating Documents and Testing the Model
105 Intro to Back-End Architecture MVC, Types of Logic, and More
106 Refactoring for MVC
107 Another Way of Creating Documents
108 Reading Documents

Error Handling with Express
109 Section Intro
110 Handling Invalid Database IDs
111 Handling Duplicate Database Fields
112 Handling Mongoose Validation Errors
113 Errors Outside Express Unhandled Rejections
114 Catching Uncaught Exceptions
115 Debugging Node.js with ndb
116 Handling Unhandled Routes
117 An Overview of Error Handling
118 Implementing a Global Error Handling Middleware
119 Better Errors and Refactoring
120 Catching Errors in Async Functions
121 Adding 404 Not Found Errors
122 Errors During Development vs Production

Authentication, Authorization and Security
123 Section Intro
124 Advanced Postman Setup
125 Authorization User Roles and Permissions
126 Password Reset Functionality Reset Token
127 Sending Emails with Nodemailer
128 Password Reset Functionality Setting New Password
129 Updating the Current User Password
130 Updating the Current User Data
131 Deleting the Current User
132 Security Best Practices
133 Sending JWT via Cookie
134 Modelling Users
135 Implementing Rate Limiting
136 Setting Security HTTP Headers
137 Data Sanitization
138 Preventing Parameter Pollution
139 Creating New Users
140 Managing Passwords
141 How Authentication with JWT Works
142 Signing up Users
143 Logging in Users
144 Protecting Tour Routes – Part 1
145 Protecting Tour Routes – Part 2

Modelling Data and Advanced Mongoose
146 Section Intro
147 Populating Reviews
148 Virtual Populate Tours and Reviews
149 Implementing Simple Nested Routes
150 Nested Routes with Express
151 Adding a Nested GET Endpoint
152 Building Handler Factory Functions Delete
153 Factory Functions Update and Create
154 Factory Functions Reading
155 Adding a me Endpoint
156 Adding Missing Authentication and Authorization
157 MongoDB Data Modelling
158 Importing Review and User Data
159 Improving Read Performance with Indexes
160 Calculating Average Rating on Tours – Part 1
161 Calculating Average Rating on Tours – Part 2
162 Preventing Duplicate Reviews
163 Geospatial Queries Finding Tours Within Radius
164 Geospatial Aggregation Calculating Distances
165 Creating API Documentation Using Postman
166 Designing Our Data Model
167 Modelling Locations (Geospatial Data)
168 Modelling Tour Guides Embedding
169 Modelling Tour Guides Child Referencing
170 Populating Tour Guides
171 Modelling Reviews Parent Referencing
172 Creating and Getting Reviews

Server-Side Rendering with Pug Templates
173 Section Intro
174 Building the Tour Overview – Part 2
175 Building the Tour Page – Part 1
176 Building the Tour Page – Part 2
177 Including a Map with Mapbox – Part 1
178 Including a Map with Mapbox – Part 2
179 Building the Login Screen
180 Logging in Users with Our API – Part 1
181 Logging in Users with Our API – Part 2
182 Logging in Users with Our API – Part 3
183 Logging out Users
184 Recap Server-Side vs Client-Side Rendering
185 Rendering Error Pages
186 Building the User Account Page
187 Updating User Data
188 Updating User Data with Our API
189 Updating User Password with Our API
190 Setting up Pug in Express
191 First Steps with Pug
192 Creating Our Base Template
193 Including Files into Pug Templates
194 Extending Our Base Template with Blocks
195 Setting up the Project Structure
196 Building the Tour Overview – Part 1

Advanced Features Payments, Email, File Uploads
197 Section Intro
198 Email Templates with Pug Welcome Emails
199 Sending Password Reset Emails
200 Using Sendgrid for Real Emails
201 Credit Card Payments with Stripe
202 Integrating Stripe into the Back-End
203 Processing Payments on the Front-End
204 Modelling the Bookings
205 Creating New Bookings on Checkout Success
206 Rendering a User’s Booked Tours
207 Finishing the Bookings API
208 Image Uploads Using Multer Users
209 Final Considerations
210 Configuring Multer
211 Saving Image Name to Database
212 Resizing Images
213 Adding Image Uploads to Form
214 Uploading Multiple Images Tours
215 Processing Multiple Images
216 Building a Complex Email Handler

Setting Up Git and Deployment
217 Section Intro
218 Finishing Payments with Stripe Webhooks
219 Setting Up Git and GitHub
220 Git Fundamentals
221 Pushing to GitHub
222 Preparing Our App for Deployment
223 Deploying Our App to Heroku
224 Testing for Secure HTTPS Connections
225 Responding to a SIGTERM Signal
226 Implementing CORS

That’s It, Everyone!
227 Where to Go from Here