The Complete Nodejs Developer 2

Tags: Node.Js

Learn Node.js by building real-world applications with Node JS, Express, MongoDB, Jest, and more!

Last updated 2022-01-10 | 4.7

- Completely refilmed for 3rd edition
- Build
- test
- and launch Node apps
- Create Express web servers and APIs

What you'll learn

Completely refilmed for 3rd edition
Build
test
and launch Node apps
Create Express web servers and APIs
Store data with Mongoose and MongoDB
Use cutting-edge ES6/ES7 JavaScript
Deploy your Node apps to production
Create real-time web apps with SocketIO

* Requirements

* A computer on which you can install software (Windows
* MacOS
* or Linux)
* A basic understanding of JavaScript (variables
* functions
* objects
* arrays
* if statements)

Description

Have you tried to learn Node before? You start a new course, and the instructor has you installing a bunch of libraries before you even know what Node is or how it works. You eventually get stuck and reach out to the instructor, but you get no reply. You then close the course and never open it again.

Sound familiar?

I created this course to be what I wanted when I was learning Node.

The Complete Node.js Developer Course covers the fundamentals of Node before diving deep into great tools like Express, Mongoose, and MongoDB.

The entire course is based around a single goal: Turning you into a professional Node developer capable of developing, testing, and deploying real-world production applications.

The best way to learn Node is by building Node apps.

From the very start you’ll be programming every project and working through challenges that I’ve designed to reinforce what you’ve learned. This will give you the hands-on experience necessary to be able to create and launch your own project once you’re done.

You’ll be building four projects:

1. A note-taking app to get your feet wet

2. A weather application that interacts with the MapBox and Dark Sky APIs

3. A task manager REST API complete with user accounts and authentication

4. A real-time chat app with a client-side companion

By the end, you’ll be able to take what you’ve learned and launch your own Node application.

When learning, learn the latest.

I work to keep this course full of the most up-to-date Node material out there. This course is compatible with the latest Node.js version.

You’re getting access to hot-off-the-press features.

Everything you need comes in one easy-to-use package.

You can stop worrying if you're learning the right skills to build an app or land a new job. I've curated all the tech that's essential to building real-world apps. I've mapped out everything in a comprehensive, easy-to-follow package designed to get you up and running in a few weeks.

There’s no better time to learn Node.

According to the 2016 Stack Overflow Survey, Node is in the top ten for back-end popularity and back-end salary, with an average salary of $85k. This means more jobs and more opportunities for you.

You might get stuck. But I’m here to help.

There’s nothing worse than getting five hours into a course, getting stuck, and not getting the help you need to continue.

I’m in the Q&A everyday to help you get unstuck. I reply to every question to get you back on track.

Don’t take my word for it. Check the reviews and see what other students are saying.

“Any questions people seem to have are answered swiftly, clearly, and often with examples posted on GitHub. Even when the questions asked are out of the scope of the course Andrew seems to come up trumps." - Adam Tait

"This is amazing. What's even better is the instructor answered all the questions I asked." - Pak Chu

"The real value in this course is Andrew; he is not just a great teacher, but also he's quick to answer questions and provide feedback." - Nick Hester

I guarantee this is the most up-to-date and engaging Node course available, and it comes with a 30-day money-back guarantee.

During eight chapters you'll learn:

1. Node.js

2. Npm

3. Asynchronous programming

4. ES6/ES7

5. MongoDB

6. Express

7. Socket.IO

8. JWT Authentication

9. Mongoose

10. File and image uploads

11. Email sending

12. Application deployment with Heroku

13. Version control with Git

14. GitHub

15. REST API Design

16. Code testing

17. Debugging

18. Jest

19. Many more tools

I can’t wait to see you on the inside!

- Andrew

Who this course is for:

  • Anyone looking to launch their own Node applications, switch careers, or freelance as a Node developer

Course content

18 sections • 177 lectures

Welcome to the Class! Preview 06:58

In this section, you'll learn how to get the most out of the class!

Grab the PDF Guide Preview 01:04

Get the most out of the class using it's 125 page PDF guide! This guide contains notes, code examples, and documentation links for each lesson.

Section Intro: Installing and Exploring Node.js Preview 00:56

In this section, you’re going to set up your machine for the rest of the course. This includes installing Node.js and Visual Studio Code. This section also dives into what Node.js is, how Node.js works, and why Node.js is a tool worth learning.

Installing Node.js and Visual Studio Code Preview 08:51

In this lesson, you’ll install Node.js and Visual Studio Code. Both are free, open source, and available for all operating system. They’re the only tools needed to get started with Node!

What is Node.js? Preview 15:31

In this lesson, you’ll explore what Node.js is. This includes a brief tour of the V8 JavaScript engine, non-blocking I/O, and more!

Why Should I Use Node.js? Preview 16:24

Why should you use Node.js? In this lesson, you’ll learn what makes Node.js a tool worth using.

Your First Node.js Script Preview 06:19

It’s time. In this lesson, you’ll be creating and running your very first Node.js app.

Section Intro: Node.js Module System Preview 01:03

The best way to get started with Node.js is to explore its module system. The module system lets you load external libraries into your application. That’ll enable you to take advantage of built-in Node.js modules as well as third-party npm modules. This includes libraries for connecting to database, creating web servers, and more!

Importing Node.js Core Modules Preview 16:28

Node.js comes with dozens of built-in modules. These built-in modules, sometimes referred to as core modules, give you access to tools for working with the file system, making http requests, creating web servers, and more! In this lesson, you’ll learn how to load in those core modules and use them in your code.

Importing Your Own Files Preview 16:35

Putting all your code in a single file makes it easy to get started with Node.js. As you add more code, you’ll want to stay organized and break your Node.js app into multiple scripts that all work together. In this lesson, you’ll learn how to create a Node.js application that’s spread out across multiple files.

Importing npm Modules Preview 16:57

When you install Node.js, you also get npm. npm is a package manager that allows you to install and use third-party npm libraries in your code. This opens up a world of possibilities, as there are npm packages for everything from email sending to file uploading. In this lesson, you’ll learn how to integrate npm into your Node.js app.

Printing in Color Preview 14:23

There are npm modules for pretty much anything you’d want to do with Node.js. In this lesson, it’s up to you to install and use a new one!

Global npm Modules and nodemon Preview 08:43

You can use npm modules from outside of your scripts by installing them globally. Globally installed modules are designed to be used from the terminal and provide you with new commands you can run. In this lesson, you’ll learn how to install and work with global modules.

Section Intro: File System and Command Line Args Preview 00:55

It’s time to start building your first Node.js application. In this section, you’ll learn how to use the file system and command line arguments to create a note taking app. Along the way, you’ll learn how to get input from the user, work with JSON, and create a place to store user data.

Getting Input from Users Preview 09:45

I can’t think of a single useful application that doesn’t get input from the users. Whether it’s their email, location, or age, getting input is essential for creating real-world apps. In this lesson, you’ll learn how to set up command line arguments that allow users to pass data into your application.

Argument Parsing with Yargs: Part I Preview 15:21

Node.js provides a bare-bones way to access command line arguments. While it’s a good start, it doesn’t provide any way to parse more complex command line arguments. In this lesson, you’ll learn how to use Yargs to easily set up a more complex set of arguments for your application.

Argument Parsing with Yargs: Part II Preview 11:21

In this lesson, you’ll continue to explore Yargs. The goal is to allow users to pass in the title and body of their notes using command line options. This same technique could be used to allow users to pass in data such as their name, email, or address.

Storing Data with JSON Preview 17:51

In this lesson, you’ll learn how to work with JSON. JSON, which stands for JavaScript Object Notation, is a lightweight data format. JSON makes it easy to store or transfer data. You’ll be using it in this application to store users notes in the file system.

Adding a Note Preview 18:33

In this lesson, you’ll be saving new notes to the file system.

Removing a Note Preview 14:59

It’s challenge time. In this lesson, you’ll be adding the ability for users to remove notes they’ve added.

ES6 Aside: Arrow Functions Preview 14:14

In this lesson, you’ll learn how to use ES6 arrow functions. Arrow functions come with a few great features, making them a nice alternative to the standard ES5 function. You’ll explore the new syntax and learn when to use them!

Refactoring to Use Arrow Functions Preview 14:31

In this lesson, you’ll use what you’ve learned about arrow functions to integrate them into the Node.js app.

Listing Notes Preview 05:30

In this lesson, you’ll create a new app feature that allows users to list out their notes.

Reading a Note Preview 11:50

In this lesson, you’ll add a new app feature that allows users to read a note.

Section Intro: Debugging Node.js Preview 01:32

What’s worse than getting an error when you run your application? Not knowing how to fix it. In this section, you’ll learn how to effectively debug your Node.js apps. You’ll learn how to track down and fix issues so you can get back to the important work.

Debugging Node.js Preview 17:11

In this lesson, you’ll learn how to debug your Node.js applications. Node comes with a great set of tools for getting to the bottom of any bug or programming issue.

Error Messages Preview 04:53

In this lesson, you’ll learn how to read error messages. Error messages contain useful information about what went wrong, but they can be a pain to read. Learning how to read them will let you fix errors fast.

Section Intro: Asynchronous Node.js Preview 01:14

It’s time to connect your application with the outside world. In this section, you’ll explore the asynchronous nature of Node.js. You’ll learn how to use asynchronous programming to make HTTP API requests to third-party HTTP APIs. This will allow you to pull in data, like real-time weather data, into your app.

Asynchronous Basics Preview 08:00

In this lesson, you’ll explore the basics of asynchronous development. You’ll get a preview of what asynchronous code looks like and how it’s different from synchronous code.

Call Stack, Callback Queue, and Event Loop Preview 18:14

In this lesson, you’ll visualize how Node.js and V8 manage your asynchronous code. This includes the call stack, callback queue, event loop, and more!

Making HTTP Requests Preview 24:31

In this lesson, you’ll learn how to make HTTP requests from Node. This will enable your app to communicate with other APIs and servers to do a wide variety of things. Everything from fetching real-time weather data to sending text messages to users.

Customizing HTTP Requests Preview 19:41

In this lesson, you’ll explore an option for the request library that allows it to automatically parse JSON data into a JavaScript object.

An HTTP Request Challenge Preview 18:31

It’s challenge time. In this video, it’s on you to integrate a geocoding API into the Node.js app.

Handling Errors Preview 18:42

There are plenty of reasons an HTTP request can fail. Maybe your machine doesn’t have an internet connection, or maybe the URL is incorrect. Regardless of what goes wrong, in this lesson, you’ll learn how to handle errors that occur when making HTTP requests.

The Callback Function Preview 16:18

A callback function is a function that’s passed as an argument to another function. That’s it. This is something you’ve used before, and in this lesson, you’ll dive a bit deeper into how they work.

Callback Abstraction Preview 18:53

Callback functions can be used to abstract complex asynchronous code into a simple reusable function. In this lesson, you’ll learn how to use this pattern to create a reusable function for geocoding an address.

Callback Abstraction Challenge Preview 14:55

It’s challenge time. In this lesson, it’s on you to create a reusable function to fetch a weather forecast.

Callback Chaining Preview 13:34

In this lesson, you’ll learn how to run one asynchronous operation only after another asynchronous operation is complete. That’ll allow you to use the output from geocoding as the input for fetching the weather.

ES6 Aside: Object Property Shorthand and Destructuring Preview 15:04

ES6 has done wonders making JavaScript easier to use. In this lesson, you’ll explore a couple of features that make it easier to work with objects.

Destructuring and Property Shorthand Challenge Preview 12:44

In this video, it’s on you to use the property shorthand and object destructuring syntax in your Node.js app.

Bonus: HTTP Requests Without a Library Preview 16:00

While the request library is great, it’s not necessary if you want to make HTTP requests from Node. In this bonus lesson, you’ll learn how to make an HTTP request without request.

Section Intro: Web Servers Preview 01:40

Node.js is commonly used as a web server to serve up websites, JSON, and more. In this section, you’ll be creating your first Node server with Express. This will allow users to interact with your application by visiting a URL in the browser.

Hello Express! Preview 18:21

Serving up websites and JSON data is easy with Express. In this lesson, you’ll learn how to create your first web server with Express. Once the server is up and running, users will be able to interact with your application via the browser.

Serving up HTML and JSON Preview 07:03

With the basics out of the way, it’s time to serve up HTML and JSON with Express. That’ll let you serve up a static website or create an HTTP REST API designed to be consumed by a web or mobile application.

Serving up Static Assets Preview 14:49

Express can serve up all the assets needed for your website. This includes HTML, CSS, JavaScript, images, and more. In this lesson, you’ll learn how to serve up an entire directory with Express.

Serving up CSS, JS, Images, and More Preview 11:30

In this lesson, you’ll use the Express server to serve up a webpage with images, styles, and scripts.

Dynamic Pages with Templating Preview 20:04

Your web pages don’t have to be static. Express supports templating engines that allow you to render dynamic HTML pages. In this lesson, you’ll learn how to set up the Handlerbars templating engine with Express.

Customizing the Views Directory Preview 07:26

In this lesson, you’ll learn how to customize the name and location of the views directory.

Advanced Templating Preview 16:24

In this lesson, you’ll learn how to work with Handlerbars partials. As the name suggests, partials are just part of a web page. Partials are great for things you need to show on multiple pages like headers, footers, and navigation bars.

404 Pages Preview 14:01

In this lesson, you’ll learn how to set up a 404 page. The 404 page will show when a user tries to visit a page that doesn’t exist.

Styling the Application: Part I Preview 16:56

In this lesson, you’ll add some styles to the weather application.

Styling the Application: Part II Preview 13:47

In this lesson, you’ll finish styling the weather application.

Section Intro: Accessing API from Browser Preview 00:52

In this section, you’ll learn how to set up communication between the client and the server. This will be done via HTTP requests. By the end of the section, users will be able to type an address in the browser to view their forecast.

The Query String Preview 17:07

In this lesson, you’ll learn how to use query strings to pass data from the client to the server. This will be used to send the address from the browser to Node.js. Node.js will then be able to fetch the weather for the address and send the forecast back to the browser.

Building a JSON HTTP Endpoint Preview 10:31

The weather application already has the code in place to fetch the weather for a given address. In this lesson, it’s your job to wire up the route handler to fetch the weather and send it back to the browser.

ES6 Aside: Default Function Parameters Preview 11:52

ES6 provides a new syntax to set default values for function arguments. In this lesson, you’ll use this new syntax to improve and clean up the application code.

Browser HTTP Requests with Fetch Preview 12:52

In this lesson, you’ll learn how to make HTTP AJAX requests from the browser. This will allow the web application to request the forecast from the Node.js server.

Creating a Search Form Preview 14:18

In this lesson, you’ll set up the weather search form. This will allow a visitor to type in their address, click a button, and then see their real-time forecast information.

Wiring up the User Interface Preview 14:06

In this lesson, you’ll learn how to manipulate the text content of HTML elements from JavaScript. That will allow the weather application to render the forecast data to the browser instead of the console.

Section Intro: Application Deployment Preview 01:03

In this section, you’ll learn how to deploy your Node.js applications to production. This will allow anyone with an internet connection to view and interact with your Node.js app. Along the way, you’ll learn how to use Git, GitHub, Heroku, and more!

Joining Heroku and GitHub Preview 09:47

In this lesson, you’ll join GitHub and Heroku. GitHub is a development platform that makes it easy to manage software development projects. Heroku is an application deployment platform which provides everything needed to deploy your Node.js applications.

Version Control with Git Preview 07:51

In this lesson, you’ll learn about version control. Version control allows you to track changes to your project code over time. This makes it easy to recover lost code and restore your project to a previously working version.

Exploring Git Preview 06:59

Git is not the easiest tool in the world to get started with. In this lesson, you’ll explore how Git works and how it can help you keep track of code changes.

Integrating Git Preview 17:10

It’s time to start using Git. In this lesson, you’ll learn how to set up Git in your project. You’ll also explore the commands needed to get Git tracking your code.

Setting up SSH Keys Preview 08:47

In this lesson, you’ll be setting up SSH on your machine. SSH is the protocol used to securely transfer code between your machine and GitHub/Heroku.

Pushing Code to GitHub Preview 14:02

In this lesson, you’ll learn how to push your code to GitHub.

Deploying Node.js to Heroku Preview 15:55

In this lesson, you’ll deploy your application to Heroku. Anyone with an internet connection will be able to access and use your application!

New Feature Deployment Workflow Preview 16:04

In this lesson, you’ll go through the process of adding a new feature to the application. This includes committing the changes, pushing them to GitHub, and deploying them to Heroku.

Avoiding Global Modules Preview 08:37

In this lesson, you’ll refactor your application to remove the use of global modules. This ensures that your application installs all the dependencies you need to run.

Section Intro: Databases and Advanced Asynchronous Development Preview 01:09

In this section, you’ll learn how to connect to a MongoDB database from your Node.js application. This will allow your application to store data in a secure and reliable fashion. The task application will use MongoDB to store user accounts as well as tasks.

MongoDB and NoSQL Databases Preview 08:06

In this lesson, you’ll explore NoSQL databases and MongoDB. MongoDB and NoSQL database are a bit different than traditional SQL databases such as MySQL, so this lesson will bring you up to speed on some key ideas and terminologies related to NoSQL.

Installing MongoDB on macOS and Linux Preview 08:10

In this lesson, you’ll learn how to install MongoDB on macOS and Linux. Using Windows? That’s covered in the next lesson.

Installing MongoDB on Windows Preview 08:30

In this lesson, you’ll learn how to install MongoDB on Windows. Using macOS or Linux? They were covered in the previous lesson.

Installing Database GUI Viewer Preview 06:54

In this lesson, you’ll set up Robo 3T. Robo 3T is a MongoDB admin tool that makes it easy to manage and visualize the data in your database.

Connecting and Inserting Documents Preview 19:18

In this lesson, you’ll be connecting to your MongoDB database from your Node.js application. You’ll also learn how to insert documents into the database to save them for later.

Inserting Documents Preview 16:42

In this lesson, you’ll explore another way to insert documents into collections.

The ObjectID Preview 15:13

In this lesson, you’ll learn about ObjectIDs. MongoDB uses ObjectIDs to create unique identifiers for all the documents in the database. It’s different than the traditional auto-incrementing integer ID, but it comes with its own set of advantages.

Querying Documents Preview 17:12

In this lesson, you’ll learn how to read data from MongoDB. This will allow you to fetch the documents that you had previously inserted.

Promises Preview 18:03

In this lesson, you’ll learn how to work with promises. Promises provide a much needed alternative to the traditional callback pattern.

Updating Documents Preview 16:06

In this lesson, you’ll learn how to update documents stored in MongoDB.

Deleting Documents Preview 07:46

In this lesson, you’ll learn how to delete documents stored in MongoDB.

Section Intro: REST APIs and Mongoose Preview 01:04

In this section, you’ll be creating a REST API using Express. You’ll learn what exactly a REST API is and how it can be used as the back-end for a web or mobile application. This section also covers data validation, application architecture, async/await, and more.

Setting up Mongoose Preview 16:38

In this lesson, you’ll be setting up Mongoose. Mongoose makes it easy to model and manage your application data. This includes data sanitization, data validation, and more. Mongoose will serve as a replacement for the native driver, providing you with a more object-oriented interface.

Creating a Mongoose Model Preview 05:26

In this lesson, it’s on you to define a second Mongoose model for tasks.

Data Validation and Sanitization: Part I Preview 17:34

In this lesson, you’ll set up data validation and sanitization for your models. Validation will allow you to restrict what data can be stored in the database, while sanitization will allow you to store user data in a uniform and standardized way.

Data Validation and Sanitization: Part II Preview 11:56

In this lesson, it’s up to you to add validation and sanitization to the task model. You’ll also be defining a new field on the user model with validation and sanitization of its own.

Structuring a REST API Preview 15:21

In this lesson, you’ll explore REST APIs. You’ll learn how to structure your API and how it can be used as the back-end for a web or mobile application.

Installing Postman Preview 08:13

In this lesson, you’ll set up Postman. Postman makes it easy to test your REST API by providing you with a set of tools for making HTTP requests. This is not meant to serve as a replacement for a web or mobile application, it’s just a useful way to debug your endpoints as you’re creating them.

Resource Creation Endpoints: Part I Preview 20:29

In this lesson, you’ll learn how to create REST API endpoints for creating resources. This will allow users of the API to create new users and new tasks.

Resource Creation Endpoints: Part II Preview 09:01

In this lesson, it’s on you to set up a new endpoint for creating tasks.

Resource Reading Endpoints: Part I Preview 13:53

In this lesson, you’ll learn how to create REST API endpoints for reading resources. This will allow users of the API to fetch users and tasks from the database.

Resource Reading Endpoints: Part II Preview 06:37

In this lesson, it’s on you to create REST API endpoints for fetching tasks out of the database.

Promise Chaining Preview 19:10

In this lesson, you’ll explore promise chaining. Promise chaining is a syntax that allows you to chain together multiple asynchronous tasks in a specific order. This is great for complex code where one asynchronous task needs to be performed after the completion of a different asynchronous task.

Promise Chaining Challenge Preview 07:19

In this lesson, it’s on you to use promise chaining to complete a programming challenge.

Async/Await Preview 17:40

In this lesson, you’ll learn how to use async and await. These provide an improved syntax for working with promises. You’ll be able to write complex asynchronous code that looks like normal synchronous code. This makes it much easier to write and maintain asynchronous code.

Async/Await: Part II Preview 12:20

In this lesson, it’s up to you to use async and await with the Mongoose library.

Integrating Async/Await Preview 16:16

In this lesson, you’ll be integrating async and await into the Express route handlers.

Resource Updating Endpoints: Part I Preview 16:00

In this lesson, you’ll learn how to create REST API endpoints for updating resources. This will allow users of the API to update users and tasks that are already in the database.

Resource Updating Endpoints: Part II Preview 08:49

In this lesson, it’s on you to create REST API endpoints for deleting tasks out of the database.

Resource Deleting Endpoints Preview 09:52

In this lesson, you’ll learn how to set up a REST API endpoint for deleting resources. This video covers deleting users as well as a challenge for deleting tasks.

Separate Route Files Preview 14:48

In this lesson, you’ll learn how to organize your Express application endpoints. Defining all endpoints in a single file is a fine way to get started, but that won’t scale well as you add more routes to the app.

Section Intro: API Authentication and Security Preview 01:04

In this section, you’ll set up authentication for the task manager app. This will require users to log in before they’ll be able to manage their tasks. This section also covers password security, Express middleware, and more.

Securely Storing Passwords: Part I Preview 11:29

In this lesson, you’ll learn how to securely store user passwords by hashing and salting the password before storing it in the database.

Securely Storing Passwords: Part II Preview 19:20

In this lesson, you’ll learn how to use Mongoose middleware. Middleware will allow you to automatically hash a user’s password before the user is saved to the database.

Logging in Users Preview 13:30

In this lesson, you’ll set up the ability for users to log into their existing accounts.

JSON Web Tokens Preview 12:03

In this lesson, you’ll explore JWTs (JSON Web Tokens). JWTs provide a nice system for issuing and validating authentication tokens. The authentication token will ensure that the client doesn’t need to log in every time they want to perform an operation on the server.

Generating Authentication Tokens Preview 13:45

In this lesson, you’ll integrate JWTs into the application. This will allow the app to issue an authentication token when a user signs up or logs in.

Express Middleware Preview 12:55

In this lesson, you’ll explore Express middleware. When working with middleware, you’ll have more control over how your server processes requests. This will be used to check that a user is authenticated before performing specific operations.

Accepting Authentication Tokens Preview 19:59

In this lesson, you’ll use Express middleware to put specific routes behind authentication. That will require the client to be authenticated before the operation can be performed.

Advanced Postman Preview 17:25

In this lesson, you’ll explore Postman environments. Environments make it easy to manage your requests and authentication without having to manually add authentication tokens to the individual requests.

Logging Out Preview 11:12

In this lesson, it’s your job to give users a way to log out of the app.

Hiding Private Data Preview 11:05

In this lesson, you’ll learn how to limit what data gets sent to the client. This will allow you to hide authentication tokens and hashed passwords from server responses.

Authenticating User Endpoints Preview 12:18

In this lesson, you’ll be adding authentication to the other user endpoints.

The User/Task Relationship Preview 19:22

In this lesson, you’ll learn how to create a relationship between a user and tasks. This will make it possible to know which tasks a user created.

Authenticating Task Endpoints Preview 15:55

In this lesson, you’ll be setting up authentication for the other task endpoints.

Cascade Delete Tasks Preview 05:26

In this lesson, you’ll learn how to use Mongoose middleware to clean up a user’s tasks when they close their account. This will make sure that all their data is securely removed from the database.

Section Intro: Sorting, Pagination, and Filtering Preview 01:21

In this section, you’ll explore advanced techniques for fetching data. This includes sorting, filtering, and pagination. All three of these will give clients more control over what data they get back. This keeps applications fast, as they don’t need to fetch unnecessary data.

Working with Timestamps Preview 06:48

In this lesson, you’ll enable timestamps for your Mongoose models. Mongoose will automatically track when documents were created and updated. This is great data to have if you want to allow users to sort by when the document was created or updated.

Filtering Data Preview 11:40

In this lesson, you’ll use query parameters to allow for data filtering. This will allow clients to fetch all tasks, just the complete tasks, or just the incomplete tasks.

Paginating Data Preview 11:03

In this lesson, you’ll add pagination to the application. This will allow the client to fetch data in pages. The client can start off with the first page of data and then fetch other pages as they’re needed.

Sorting Data Preview 11:08

In this lesson, you’ll add sorting to the application. Clients will be able to fetch the data back in any order they like.

Section Intro: File Uploads Preview 00:58

In this section, you’ll learn how to configure Node.js to support file uploads. This will allow users to upload documents, profile pictures, and any other file type you might need to support. You’ll also see what it takes to store the uploaded files in MongoDB.

Adding Support for File Uploads Preview 19:01

In this section, you’ll learn how to configure Node.js to support file uploads. This will allow users to upload documents, profile pictures, and any other file type you might need to support. You’ll also see what it takes to store the uploaded files in MongoDB.

Validating File Uploads Preview 15:14

In this lesson, you’ll learn how to validate file uploads. This will allow you to reject files that are too large or files of the wrong type.

Validation Challenge Preview 04:36

In this lesson, you’ll add validation to avatar uploads.

Handling Express Errors Preview 08:16

In this lesson, you’ll customize the errors that multer provides. This will give you complete control of what sort of response the client gets when their upload is rejected.

Adding Images to User Profile Preview 15:10

In this lesson, you’ll learn how to associate the uploaded avatar with the users account.

Serving up Files Preview 07:56

In this lesson, you’ll learn how to serve up user profile images. These images will be served up as if they were static assets for the application.

Auto-Cropping and Image Formatting Preview 11:48

In this lesson, you’ll learn how to resize and format images. This will let you create uniform sizes and file types for user avatars.

Section Intro: Sending Emails Preview 00:57

In this section, you’ll add email sending to your Node.js application! This will allow you to communicate with users as they use the app. This could be useful for welcome emails, notifications, and more!

Exploring SendGrid Preview 17:00

In this lesson, you’ll integrate SendGrid into your Node app. SendGrid is one of many services that allow you to send emails from your application code.

Sending Welcome and Cancelation Emails Preview 16:26

In this lesson, you’ll be sending email to users when they sign up or cancel their account.

Environment Variables Preview 19:09

In this lesson, you’ll learn how to use environment variables to securely store API keys and other credentials. This will reduce the chance your private keys fall into the wrong hands.

Creating a Production MongoDB Database Preview 15:28

In this lesson, you’ll set up a production MongoDB database using MongoDB Atlas. Atlas is the official MongoDB hosting platform released by the MongoDB organization.

Heroku Deployment Preview 19:30

In this lesson, you’ll deploy the task manager API to Heroku.

Section Intro: Testing Node.js Preview 01:40

In this section, you’ll learn how to test your Node.js applications. Setting up an automated test suite makes it easy to check that your application is always working as expected.

Jest Testing Framework Preview 15:57

In this lesson, you’ll set up the Jest testing framework. Jest gives you everything you need to create a test suite for your Node.js applications.

Writing Tests and Assertions Preview 17:54

In this lesson, you’ll add assertions to your test cases. Assertions allow you check if a given value is what you’re expecting or not.

Writing Your Own Tests Preview 06:19

In this video, it’s on you to write some new test cases using what you’ve learned so far.

Testing Asynchronous Code Preview 14:13

In this lesson, you’ll learn how to test asynchronous code. This will be necessary to test the Express API endpoints.

Testing an Express Application: Part I Preview 05:54

In this lesson, you’ll set up the Express API to be easily testable. This involves settings up a test environment as well as configuring Jest to work with Node.

Testing an Express Application: Part II Preview 14:18

In this lesson, you’ll add tests for the Express API. Each test case will focus on testing a specific endpoint, making assertions about the response from the server.

Jest Setup and Teardown Preview 14:27

In this lesson, you’ll configure Jest to add test data into the database. This will allow you to test operations that require existing data, such as the login operation. You can’t log in if there isn’t a user account in the database to login to.

Testing with Authentication Preview 13:11

In this lesson, you’ll learn how to test API endpoints that sit behind authentication.

Advanced Assertions Preview 12:48

In this lesson, it’s up to you to write some test cases on your own.

Mocking Libraries Preview 05:57

In this lesson, you’ll learn how to mock npm modules. Jest lets you mock npm modules so you can override module functionality in your test environment.

Wrapping up User Tests Preview 16:20

In this lesson, it’s your job to finalize the user tests.

Setup Task Test Suite Preview 15:10

In this lesson, you’ll be refactoring the user test suite. These changes will makes it possible to test the task operations too.

Testing with Task Data Preview 16:15

In this lesson, you’ll be writing some test cases for tasks.

Bonus: Extra Test Ideas Preview 02:47

In this lesson, we’ll go over some other test cases you could add to the application.

Section Intro: Real-Time Web Applications with Socket.io Preview 00:49

In this section, you’ll learn how to create real-time web applications with Node. The non-blocking nature of Node makes it well-suited for real-time applications such as chat apps, social media apps, and more.

Creating the Chat App Project Preview 13:14

In this lesson, it’s on you to set up the chat application web server.

WebSockets Preview 06:08

In this lesson, you’ll learn about the WebSocket protocol. The WebSocket protocol supports real-time bi-direction communication, which makes it a great fit for the chat application.

Getting Started with Socket.io Preview 12:02

In this lesson, you’ll install and configure Socket.io. Socket.io comes with everything needed to set up a WebSocket server using Node.

Socket.io Events Preview 17:10

In this lesson, you’ll learn how to work with events in Socket.io. Events allow you to transfer data from the client to the server or from the server to the client.

Socket.io Events Challenge Preview 15:39

In this lesson, it’s on you to use events to build the chat applications messaging system.

Broadcasting Events Preview 06:22

In this lesson, you’ll learn how to broadcast events. Broadcasted events are sent to all connected clients, expect for the client that initiated the broadcast.

Sharing Your Location Preview 15:11

In this lesson, you’ll integrate the Geolocation API into the chat app. This will allow users to share their locations in real time.

Event Acknowledgements Preview 13:25

In this lesson, you’ll learn about event acknowledgements. This allows the receiver of an event to send a message back to the sender of the event. This is useful for error handling and data validation.

Form and Button States Preview 11:22

In this lesson, you’ll use a bit of DOM manipulation to provide users with a nicer experience.

Rendering Messages Preview 12:45

In this lesson, you’ll learn how to use a client-side templating engine to render messages to the screen.

Rendering Location Messages Preview 10:28

In this lesson, it’s on you to render a new template for shared locations.

Working with Time Preview 20:27

In this lesson, you’ll learn how to work with time in JavaScript. This will allow you to show users when a given message was sent.

Timestamps for Location Messages Preview 07:05

In this lesson, it’s on you to add timestamps for location messages.

Styling the Chat App Preview 13:10

In this lesson, you’ll add styles to the chat application. This will give it a professional and polished feel.

Join Page Preview 06:17

In this lesson, you’ll add a join page to the chat application. This will allow users to pick a username and join a specific chat room.

Socket.io Rooms Preview 14:37

In this lesson, you’ll learn how to work with rooms in Socket.io. Rooms allow you to separate users into groups, which is a great fit for the chat application.

Storing Users: Part I Preview 17:15

In this lesson, you’ll create functions that allow the chat application to track which users are in which rooms.

Storing Users: Part II Preview 07:58

In this lesson, you’ll continue to create functions that allow the chat application to track which users are in which rooms.

Tracking Users Joining and Leaving Preview 14:11

In this lesson, you’ll use the functions created in the last two lessons to track users.

Sending Messages to Rooms Preview 14:29

In this lesson, you’ll use the tracked user data to send messages to the correct rooms.

Rendering User List Preview 11:37

In this lesson, you’ll set up the chat application to show a list of all active users in the sidebar. With Socket.io, this list will be updated in real time.

Automatic Scrolling Preview 16:03

In this lesson, you’ll add automatic scrolling to the chat application.

Deploying the Chat Application Preview 08:06

In this lesson, it’s on you to deploy the chat application to production!

Section Intro Preview 00:50

The class is over, but there are a few more things I want to cover. In this section, you'll explore where to go from here.

New Feature Ideas Preview 03:59

In this lesson, I'll give you a few ideas for new features you can add to the applications built in the class.

Bonus: What should I learn next? Preview 02:39

In this lesson, you'll get an answer to the question: What should I learn next?