Welcome, Welcome, Welcome!
  • Course Structure and Projects
  • READ BEFORE YOU START!
  • Let's Install Node.js
Introduction to Node.js and NPM
  • Section Intro
  • What Is Node.js and Why Use It?
  • Running Javascript Outside the Browser
  • Using Modules 1: Core Modules
  • Reading and Writing Files
  • Blocking and Non-Blocking: Asynchronous Nature of Node.js
  • Reading and Writing Files Asynchronously
  • Creating a Simple Web Server
  • Routing
  • Building a (Very) Simple API
  • HTML Templating: Building the Templates
  • HTML Templating: Filling the Templates
  • Parsing Variables from URLs
  • Using Modules 2: Our Own Modules
  • Introduction to NPM and the package.json File
  • Types of Packages and Installs
  • Using Modules 3: 3rd Party Modules
  • Package Versioning and Updating
  • Setting up Prettier in VS Code
  • Recap and What's Next
Introduction to Back-End Web Development
  • Section Intro
  • An Overview of How the Web Works
  • HTTP in Action
  • Front-End vs. Back-End Web Development
  • Static vs Dynamic vs API
How Node.js Works: A Look Behind the Scenes
  • Section Intro
  • Node, V8, Libuv and C++
  • Processes, Threads and the Thread Pool
  • The Node.js Event Loop
  • The Event Loop in Practice
  • Events and Event-Driven Architecture
  • Events in Practice
  • Introduction to Streams
  • Streams in Practice
  • How Requiring Modules Really Works
  • Requiring Modules in Practice
[Optional] Asynchronous JavaScript: Promises and Async/Await
  • Section Intro
  • The Problem with Callbacks: Callback Hell
  • From Callback Hell to Promises
  • Building Promises
  • Consuming Promises with Async/Await
  • Returning Values from Async Functions
  • Waiting for Multiple Promises Simultaneously
Express: Let's Start Building the Natours API!
  • Section Intro
  • What is Express?
  • Installing Postman
  • Setting up Express and Basic Routing
  • APIs and RESTful API Design
  • Starting Our API: Handling GET Requests
  • Handling POST Requests
  • Responding to URL Parameters
  • Handling PATCH Requests
  • Handling DELETE Requests
  • Refactoring Our Routes
  • Middleware and the Request-Response Cycle
  • Creating Our Own Middleware
  • Using 3rd-Party Middleware
  • Implementing the "Users" Routes
  • Creating and Mounting Multiple Routers
  • A Better File Structure
  • Param Middleware
  • Chaining Multiple Middleware Functions
  • Serving Static Files
  • Environment Variables
  • Setting up ESLint + Prettier in VS Code
Introduction to MongoDB
  • Section Intro
  • What is MongoDB?
  • Installing MongoDB on macOS
  • Installing MongoDB on Windows
  • Creating a Local Database
  • CRUD: Creating Documents
  • CRUD: Querying (Reading) Documents
  • CRUD: Updating Documents
  • CRUD: Deleting Documents
  • Using Compass App for CRUD Operations
  • Creating a Hosted Database with Atlas
  • Connecting to Our Hosted Database
Using MongoDB with Mongoose
  • Section Intro
  • Connecting Our Database with the Express App
  • What Is Mongoose?
  • Creating a Simple Tour Model
  • Creating Documents and Testing the Model
  • Intro to Back-End Architecture: MVC, Types of Logic, and More
  • Refactoring for MVC
  • Another Way of Creating Documents
  • Reading Documents
  • Updating Documents
  • Deleting Documents
  • Modelling the Tours