Section 1 : Introduction

Lecture 1 INTRODUCTION TO BRAINMEASURES PROCTOR SYSTEM
Lecture 2 What is Node 00:04:42 Duration
Lecture 3 About Proctor Testing
Lecture 4 Installing Node 00:09:39 Duration
Lecture 5 Understanding the Role & Usage of Node 00:07:33 Duration
Lecture 6 Course Outline 00:08:03 Duration
Lecture 7 How To Get The Most Out Of The Course 00:03:54 Duration
Lecture 8 Working with the REPL vs Using Files 00:02:59 Duration
Lecture 9 Using the Attached Source Code

Section 2 : Optional JavaScript - A Quick Refresher

Lecture 1 Module Introduction 00:01:38 Duration
Lecture 2 JavaScript in a Nutshell 00:02:39 Duration
Lecture 3 Refreshing the Core Syntax 00:04:38 Duration
Lecture 4 let & const 00:02:30 Duration
Lecture 5 Understanding Arrow Functions 00:05:22 Duration
Lecture 6 Working with Objects, Properties & Methods 00:03:23 Duration
Lecture 7 Arrays & Array Methods 00:04:20 Duration
Lecture 8 Arrays, Objects & Reference Types 00:02:17 Duration
Lecture 9 Understanding Spread & Rest Operators 00:06:46 Duration
Lecture 10 Destructuring 00:05:41 Duration
Lecture 11 Async Code & Promises 00:10:33 Duration
Lecture 12 Template Literals
Lecture 13 Wrap Up 00:00:51 Duration
Lecture 14 Useful Resources & Links

Section 3 : Understanding the Basics

Lecture 1 Module Introduction 00:04:12 Duration
Lecture 2 How The Web Works 00:01:51 Duration
Lecture 3 Creating a Node Server 00:13:22 Duration
Lecture 4 The Node Lifecycle & Event Loop 00:04:53 Duration
Lecture 5 Controlling the Node
Lecture 6 Understanding Requests 00:05:37 Duration
Lecture 7 Sending Responses 00:03:10 Duration
Lecture 8 Request & Response Headers
Lecture 9 Routing Requests 00:05:48 Duration
Lecture 10 Redirecting Requests 00:04:11 Duration
Lecture 11 Parsing Request Bodies 00:11:12 Duration
Lecture 12 Understanding Event Driven Code Execution 00:06:00 Duration
Lecture 13 Blocking and Non-Blocking Code 00:05:04 Duration
Lecture 14 Node 00:12:01 Duration
Lecture 15 Using the Node Modules System 00:10:06 Duration
Lecture 16 Wrap Up 00:05:15 Duration
Lecture 17 Useful Resources & Links

Section 4 : Improved Development Workflow and Debugging

Lecture 1 Module Introduction 00:00:40 Duration
Lecture 2 Understanding NPM Scripts 00:07:04 Duration
Lecture 3 Installing 3rd Party Packages 00:08:20 Duration
Lecture 4 Global Features vs Core Modules vs Third-Party Modules
Lecture 5 Using Nodemon for Autorestarts 00:01:37 Duration
Lecture 6 Global & Local npm Packages
Lecture 7 Understanding different Error Types 00:01:49 Duration
Lecture 8 Finding & Fixing Syntax Errors 00:03:10 Duration
Lecture 9 Dealing with Runtime Errors 00:02:47 Duration
Lecture 10 Logical Errors 00:06:33 Duration
Lecture 11 Using the Debugger 00:03:11 Duration
Lecture 12 Restarting the Debugger Automatically After Editing our App 00:06:22 Duration
Lecture 13 Debugging Node
Lecture 14 Changing Variables in the Debug Console 00:01:26 Duration
Lecture 15 Wrap Up 00:03:14 Duration
Lecture 16 Useful Resources & Links

Section 5 : Working with Express

Lecture 1 Module Introduction 00:02:15 Duration
Lecture 2 What is Express 00:03:44 Duration
Lecture 3 Installing Express 00:03:47 Duration
Lecture 4 Adding Middleware 00:05:14 Duration
Lecture 5 How Middleware Works 00:02:59 Duration
Lecture 6 Express 00:03:42 Duration
Lecture 7 Handling Different Routes 00:04:59 Duration
Lecture 8 Parsing Incoming Requests 00:08:00 Duration
Lecture 9 Limiting Middleware Execution to POST Requests 00:01:49 Duration
Lecture 10 Using Express Router 00:08:05 Duration
Lecture 11 Adding a 404 Error Page 00:02:30 Duration
Lecture 12 Filtering Paths 00:03:38 Duration
Lecture 13 Creating HTML Pages 00:05:09 Duration
Lecture 14 Serving HTML Pages 00:07:20 Duration
Lecture 15 Returning a 404 Page 00:02:01 Duration
Lecture 16 A Hint!
Lecture 17 Using a Helper Function for Navigation 00:03:38 Duration
Lecture 18 Styling our Pages 00:13:58 Duration
Lecture 19 Serving Files Statically 00:07:49 Duration
Lecture 20 Wrap Up 00:03:37 Duration
Lecture 21 Useful Resources & Links

Section 6 : Working with Dynamic Content & Adding Templating Engines

Lecture 1 Module Introduction 00:02:31 Duration
Lecture 2 Sharing Data Across Requests & Users 00:08:05 Duration
Lecture 3 Templating Engines - An Overview 00:04:40 Duration
Lecture 4 Installing & Implementing Pug 00:11:04 Duration
Lecture 5 Outputting Dynamic Content 00:11:03 Duration
Lecture 6 Official Pug Docs
Lecture 7 Converting HTML Files to Pug 00:05:56 Duration
Lecture 8 Adding a Layout 00:05:35 Duration
Lecture 9 Finishing the Pug Template 00:05:50 Duration
Lecture 10 Avoiding an Error
Lecture 11 Working with Handlebars 00:05:08 Duration
Lecture 12 Converting our Project to Handlebars 00:07:41 Duration
Lecture 13 Adding the Layout to Handlebars 00:08:41 Duration
Lecture 14 Working with EJS 00:08:19 Duration
Lecture 15 Working on the Layout with Partials 00:09:33 Duration
Lecture 16 Wrap Up 00:03:47 Duration
Lecture 17 [OPTIONAL] Assignment Solution 00:25:02 Duration
Lecture 18 Useful Resources & Links

Section 7 : The Model View Controller (MVC)

Lecture 1 Module Introduction 00:00:52 Duration
Lecture 2 What is the MVC 00:02:49 Duration
Lecture 3 Adding Controllers 00:09:21 Duration
Lecture 4 Finishing the Controllers 00:02:37 Duration
Lecture 5 Adding a Product Model 00:08:05 Duration
Lecture 6 Storing Data in Files Via the Model 00:09:39 Duration
Lecture 7 Fetching Data from Files Via the Model 00:03:56 Duration
Lecture 8 Refactoring the File Storage Code 00:04:25 Duration
Lecture 9 Wrap Up 00:02:15 Duration
Lecture 10 Useful Resources & Links

Section 8 : Optional Enhancing the App

Lecture 1 Module Introduction 00:01:21 Duration
Lecture 2 Creating the Shop Structure 00:05:35 Duration
Lecture 3 Working on the Navigation 00:02:50 Duration
Lecture 4 Registering the Routes 00:11:05 Duration
Lecture 5 Storing Product Data 00:05:16 Duration
Lecture 6 Displaying Product Data 00:03:02 Duration
Lecture 7 Editing & Deleting Products 00:04:48 Duration
Lecture 8 Adding Another Item 00:02:08 Duration
Lecture 9 Useful Resources & Links

Section 9 : Dynamic Routes & Advanced Models

Lecture 1 Module Introduction 00:01:07 Duration
Lecture 2 Preparations 00:01:24 Duration
Lecture 3 Applied Changes
Lecture 4 Adding the Product ID to the Path 00:04:34 Duration
Lecture 5 Extracting Dynamic Params 00:04:32 Duration
Lecture 6 Loading Product Detail Data 00:04:53 Duration
Lecture 7 Rendering the Product Detail View 00:05:27 Duration
Lecture 8 Passing Data with POST Requests 00:07:19 Duration
Lecture 9 Adding a Cart Model 00:12:29 Duration
Lecture 10 Using Query Params 00:07:55 Duration
Lecture 11 Pre-Populating the Edit Product Page with Data 00:06:46 Duration
Lecture 12 Linking to the Edit Page 00:02:20 Duration
Lecture 13 Editing the Product Data 00:08:59 Duration
Lecture 14 Adding the Product-Delete Functionality 00:05:35 Duration
Lecture 15 Deleting Cart Items 00:08:11 Duration
Lecture 16 Displaying Cart Items on the Cart Page 00:08:45 Duration
Lecture 17 Deleting Cart Items 00:05:25 Duration
Lecture 18 Fixing a Delete Product Bug 00:01:32 Duration
Lecture 19 Wrap Up 00:01:46 Duration
Lecture 20 Useful Resources & Links

Section 10 : SQL Introduction

Lecture 1 Module Introduction 00:01:33 Duration
Lecture 2 Choosing a Database 00:04:18 Duration
Lecture 3 NoSQL Introduction 00:04:21 Duration
Lecture 4 Comparing SQL and NoSQL 00:05:06 Duration
Lecture 5 Setting Up MySQL 00:07:16 Duration
Lecture 6 Connecting our App to the SQL Database 00:06:50 Duration
Lecture 7 Basic SQL & Creating a Table 00:04:08 Duration
Lecture 8 Retrieving Data 00:03:00 Duration
Lecture 9 Fetching Products 00:06:31 Duration
Lecture 10 Fetching Products - Time to Practice 00:01:04 Duration
Lecture 11 Inserting Data Into the Database 00:04:12 Duration
Lecture 12 Fetching a Single Product with the where Condition 00:02:57 Duration
Lecture 13 Wrap Up 00:01:25 Duration
Lecture 14 Useful Resources & Links

Section 11 : Understanding Sequelize

Lecture 1 Module Introduction 00:01:27 Duration
Lecture 2 What is Sequelize 00:02:35 Duration
Lecture 3 Connecting to the Database 00:03:58 Duration
Lecture 4 Defining a Model 00:05:48 Duration
Lecture 5 Syncing JS Definitions to the Database 00:04:30 Duration
Lecture 6 Inserting Data & Creating a Product 00:04:49 Duration
Lecture 7 MUST READ findById() in Sequelize 5
Lecture 8 Retrieving Data & Finding Products 00:03:01 Duration
Lecture 9 Getting a Single Product with the where Condition 00:04:31 Duration
Lecture 10 Fetching Admin Products 00:01:26 Duration
Lecture 11 Updating Products 00:05:18 Duration
Lecture 12 Deleting Products 00:02:49 Duration
Lecture 13 Creating a User Model 00:02:49 Duration
Lecture 14 Adding a One-To-Many Relationship 00:05:55 Duration
Lecture 15 Creating & Managing a Dummy User 00:06:02 Duration
Lecture 16 Using Magic Association Methods 00:03:42 Duration
Lecture 17 Fetching Related Products 00:02:46 Duration
Lecture 18 One-To-Many & Many-To-Many Relations 00:06:04 Duration
Lecture 19 Creating & Fetching a Cart 00:05:45 Duration
Lecture 20 Adding New Products to the Cart 00:06:43 Duration
Lecture 21 Adding Existing Products & Retrieving Cart Items 00:04:55 Duration
Lecture 22 Deleting Related Items & Deleting Cart Products 00:02:25 Duration
Lecture 23 Adding an Order Model 00:04:19 Duration
Lecture 24 Storing Cartitems as Orderitems 00:08:19 Duration
Lecture 25 Resetting the Cart & Fetching and Outputting Orders 00:09:54 Duration
Lecture 26 Wrap Up 00:01:50 Duration
Lecture 27 Useful Resources & Links

Section 12 : Working with NoSQL & Using MongoDB

Lecture 1 Module Introduction 00:01:17 Duration
Lecture 2 What is MongoDB 00:03:57 Duration
Lecture 3 Relations in NoSQL 00:03:58 Duration
Lecture 4 Setting Up MongoDB 00:04:48 Duration
Lecture 5 Installing the MongoDB Driver 00:07:02 Duration
Lecture 6 Creating the Database Connection 00:03:25 Duration
Lecture 7 Finishing the Database Connection 00:04:21 Duration
Lecture 8 Using the Database Connection 00:05:15 Duration
Lecture 9 Creating Products 00:02:08 Duration
Lecture 10 Understanding the MongoDB Compass 00:02:38 Duration
Lecture 11 Fetching All Products 00:04:35 Duration
Lecture 12 Fetching a Single Product 00:07:45 Duration
Lecture 13 Making the Edit & Delete Buttons Work Again 00:02:22 Duration
Lecture 14 Working on the Product Model to Edit our Product 00:07:14 Duration
Lecture 15 Finishing the Update Product Code 00:03:57 Duration
Lecture 16 One Note About Updating Products 00:01:47 Duration
Lecture 17 Deleting Products 00:03:30 Duration
Lecture 18 Fixing the Add Product Functionality 00:01:28 Duration
Lecture 19 Creating New Users 00:07:00 Duration
Lecture 20 Storing the User in our Database 00:05:40 Duration
Lecture 21 Working on Cart Items & Orders 00:07:13 Duration
Lecture 22 Adding the Add to Cart Functionality
Lecture 23 Storing Multiple Products in the Cart 00:07:01 Duration
Lecture 24 Displaying the Cart Items
Lecture 25 Fixing a Bug 00:01:02 Duration
Lecture 26 Deleting Cart Items 00:04:02 Duration
Lecture 27 Adding an Order 00:04:37 Duration
Lecture 28 Adding Relational Order Data 00:06:22 Duration
Lecture 29 Getting Orders 00:03:21 Duration
Lecture 30 Removing Deleted Items From the Cart 00:02:59 Duration
Lecture 31 Wrap Up 00:02:19 Duration
Lecture 32 Useful Resources & Links
Lecture 33 Two Adjustments (behind the scenes)

Section 13 : Working with Mongoose

Lecture 1 Module Introduction 00:01:24 Duration
Lecture 2 What is Mongoose 00:02:05 Duration
Lecture 3 Connecting to the MongoDB Server with Mongoose 00:04:47 Duration
Lecture 4 Creating the Product Schema 00:06:01 Duration
Lecture 5 Saving Data Through Mongoose 00:06:11 Duration
Lecture 6 Fetching All Products 00:02:28 Duration
Lecture 7 Fetching a Single Product 00:01:25 Duration
Lecture 8 Updating Products 00:04:14 Duration
Lecture 9 Deleting Products 00:01:20 Duration
Lecture 10 Adding and Using a User Model 00:06:36 Duration
Lecture 11 Using Relations in Mongoose 00:03:44 Duration
Lecture 12 One Important Thing About Fetching Relations 00:03:54 Duration
Lecture 13 Working on the Shopping Cart 00:05:25 Duration
Lecture 14 Loading the Cart 00:05:12 Duration
Lecture 15 Deleting Cart Items
Lecture 16 Creating & Getting Orders 00:09:57 Duration
Lecture 17 Storing All Order Related Data 00:01:52 Duration
Lecture 18 Clearing the Cart After Storing an Order 00:01:59 Duration
Lecture 19 Getting & Displaying the Orders 00:03:41 Duration
Lecture 20 Wrap Up 00:01:37 Duration
Lecture 21 Useful Resources & Links

Section 14 : Sessions & Cookies

Lecture 1 Module Introduction 00:00:46 Duration
Lecture 2 What is a Cookie 00:01:58 Duration
Lecture 3 The Current Project Status 00:02:18 Duration
Lecture 4 Optional Creating the Login Form 00:06:23 Duration
Lecture 5 Adding the Request Driven Login Solution 00:07:41 Duration
Lecture 6 Setting a Cookie 00:05:55 Duration
Lecture 7 Manipulating Cookies 00:01:58 Duration
Lecture 8 Configuring Cookies 00:05:44 Duration
Lecture 9 What is a Session 00:02:59 Duration
Lecture 10 Initializing the Session Middleware 00:02:44 Duration
Lecture 11 Using the Session Middleware 00:04:14 Duration
Lecture 12 Using MongoDB to Store Sessions 00:06:00 Duration
Lecture 13 Sessions & Cookies - A Short Summary 00:01:53 Duration
Lecture 14 Deleting a Cookie 00:04:35 Duration
Lecture 15 Fixing Some Minor Bugs 00:04:28 Duration
Lecture 16 Making Add to Cart Work Again 00:06:46 Duration
Lecture 17 Two Tiny Improvements 00:03:12 Duration
Lecture 18 Wrap Up 00:03:43 Duration
Lecture 19 Code Adjustments
Lecture 20 Useful Resources & Links

Section 15 : Adding Authentication

Lecture 1 Module Introduction
Lecture 2 What is Authentication 00:01:23 Duration
Lecture 3 How is Authentication Implemented 00:02:05 Duration
Lecture 4 Our Updated Project Status 00:02:26 Duration
Lecture 5 Implementing an Authentication Flow 00:07:35 Duration
Lecture 6 Encrypting Passwords 00:04:36 Duration
Lecture 7 Adding a Tiny Code Improvement 00:01:21 Duration
Lecture 8 Adding the Signin Functionality 00:06:22 Duration
Lecture 9 Working on Route Protection 00:02:13 Duration
Lecture 10 Using Middleware to Protect Routes 00:04:38 Duration
Lecture 11 Understanding CSRF Attacks 00:03:23 Duration
Lecture 12 Using a CSRF Token 00:06:57 Duration
Lecture 13 Adding CSRF Protection 00:04:24 Duration
Lecture 14 Fixing the Order Button 00:01:17 Duration
Lecture 15 Providing User Feedback 00:07:10 Duration
Lecture 16 Optional Styling Error Messages 00:03:33 Duration
Lecture 17 Finishing the Flash Messages 00:02:20 Duration
Lecture 18 Adding Additional Flash Messages 00:02:21 Duration
Lecture 19 Wrap Up 00:02:32 Duration
Lecture 20 Useful Resources & Links

Section 16 : Sending Emails

Lecture 1 Module Introduction 00:00:47 Duration
Lecture 2 How Does Sending Emails Work 00:01:34 Duration
Lecture 3 Using SendGrid 00:01:25 Duration
Lecture 4 Using Nodemailer to Send an Email 00:05:10 Duration
Lecture 5 Potential Limitation for Large Scale Apps 00:01:29 Duration
Lecture 6 Useful Resources & Links

Section 17 : Advanced Authentication

Lecture 1 Module Introduction 00:00:42 Duration
Lecture 2 Resetting Passwords 00:03:03 Duration
Lecture 3 Implementing the Token Logic 00:07:41 Duration
Lecture 4 Creating the Token 00:01:28 Duration
Lecture 5 Creating the Reset Password Form 00:05:27 Duration
Lecture 6 Adding Logic to Update the Password 00:06:35 Duration
Lecture 7 Why we Need Authorization 00:01:58 Duration
Lecture 8 Adding Authorization 00:02:08 Duration
Lecture 9 Adding Protection to Post Actions 00:03:43 Duration
Lecture 10 Why Editing Fails 00:01:06 Duration
Lecture 11 Wrap Up 00:01:46 Duration
Lecture 12 Useful Resources & Links

Section 18 : Understanding Validation

Lecture 1 Module Introduction 00:01:03 Duration
Lecture 2 Why Should We Use Validation 00:02:28 Duration
Lecture 3 How to Validate Input 00:04:04 Duration
Lecture 4 Setup & Basic Validation 00:10:44 Duration
Lecture 5 Using Validation Error Messages 00:02:12 Duration
Lecture 6 Built-In & Custom Validators 00:03:55 Duration
Lecture 7 More Validators 00:04:26 Duration
Lecture 8 Checking For Field Equality 00:03:15 Duration
Lecture 9 Adding Async Validation 00:04:46 Duration
Lecture 10 Keeping User Input 00:04:12 Duration
Lecture 11 Adding Conditional CSS Classes 00:05:30 Duration
Lecture 12 Adding Validation to Login 00:05:37 Duration
Lecture 13 Sanitizing Data 00:03:42 Duration
Lecture 14 Validating Product Addition 00:11:41 Duration
Lecture 15 Validating Product Editing 00:06:57 Duration
Lecture 16 Wrap Up 00:01:23 Duration
Lecture 17 Useful Resources & Links

Section 19 : Error Handling

Lecture 1 Module Introduction 00:00:45 Duration
Lecture 2 Types of Errors & Error Handling 00:05:15 Duration
Lecture 3 Analyzing the Error Handling in the Current Project 00:02:05 Duration
Lecture 4 Errors - Some Theory 00:06:43 Duration
Lecture 5 Throwing Errors in Code 00:02:43 Duration
Lecture 6 Returning Error Pages 00:06:55 Duration
Lecture 7 Using the Express 00:05:47 Duration
Lecture 8 Updating the App 00:03:10 Duration
Lecture 9 Using the Error Handling Middleware Correctly 00:04:55 Duration
Lecture 10 Status Codes 00:05:58 Duration
Lecture 11 Available Status Codes
Lecture 12 Wrap Up 00:02:21 Duration
Lecture 13 Useful Resources & Links

Section 20 : File Upload & Download

Lecture 1 Module Introduction 00:00:55 Duration
Lecture 2 Adding a File Picker to the Frontend 00:03:07 Duration
Lecture 3 Handling Multipart Form Data 00:05:15 Duration
Lecture 4 Handling File Uploads with Multer 00:04:52 Duration
Lecture 5 Configuring Multer to Adjust Filename & Filepath 00:04:29 Duration
Lecture 6 Filtering Files by Mimetype 00:02:28 Duration
Lecture 7 Storing File Data in the Database 00:07:42 Duration
Lecture 8 Remove imageUrl from Add Product
Lecture 9 Serving Images Statically 00:04:25 Duration
Lecture 10 Downloading Files with Authentication 00:07:34 Duration
Lecture 11 Setting File Type Headers 00:02:35 Duration
Lecture 12 Restricting File Access 00:03:19 Duration
Lecture 13 Streaming Data vs Preloading Data 00:03:20 Duration
Lecture 14 Using PDFKit for 00:05:32 Duration
Lecture 15 Generating 00:06:51 Duration
Lecture 16 Deleting Files 00:05:57 Duration
Lecture 17 Fixing Invoice Links 00:00:35 Duration
Lecture 18 Wrap Up 00:01:31 Duration
Lecture 19 Useful Resources & Links

Section 21 : Adding Pagination

Lecture 1 Module Introduction 00:00:49 Duration
Lecture 2 Adding Pagination Links 00:04:09 Duration
Lecture 3 Retrieving a Chunk of Data 00:03:48 Duration
Lecture 4 Skip & Limit with SQL
Lecture 5 Preparing Pagination Data on the Server 00:03:52 Duration
Lecture 6 Adding Dynamic Pagination Buttons 00:08:07 Duration
Lecture 7 Re-Using the Pagination Logic & Controls 00:03:41 Duration
Lecture 8 Wrap Up 00:01:02 Duration
Lecture 9 Useful Resources & Links

Section 22 : Understanding Async Requests

Lecture 1 Module Introduction 00:00:49 Duration
Lecture 2 What are Async Requests 00:02:07 Duration
Lecture 3 Adding Client Side JS Code 00:07:24 Duration
Lecture 4 The JSON Data Format
Lecture 5 Sending & Handling Background Requests 00:09:26 Duration
Lecture 6 Manipulating the DOM 00:03:02 Duration
Lecture 7 Useful Resources & Links

Section 23 : Adding Payments

Lecture 1 Module Introduction 00:00:58 Duration
Lecture 2 How Payments Work 00:02:04 Duration
Lecture 3 Adding a Checkout Page 00:06:01 Duration
Lecture 4 Using Stripe in Your App 00:19:23 Duration
Lecture 5 Useful Resources & Links

Section 24 : Working with REST APIs - The Basics

Lecture 1 Module Introduction 00:01:26 Duration
Lecture 2 What are REST APIs and why do we use Them 00:01:40 Duration
Lecture 3 Accessing Data with REST APIs 00:05:42 Duration
Lecture 4 Understanding Routing & HTTP Methods 00:05:26 Duration
Lecture 5 REST APIs - The Core Principles 00:04:09 Duration
Lecture 6 Creating our REST API Project & Implementing the Route Setup 00:06:42 Duration
Lecture 7 INTRODUCTION TO BRAINMEASURES PROCTOR SYSTEM
Lecture 8 REST APIs, Clients & CORS Errors 00:10:33 Duration
Lecture 9 Sending POST Requests 00:06:32 Duration
Lecture 10 Wrap Up 00:02:15 Duration
Lecture 11 Useful Resources & Links

Section 25 : Working with REST APIs - The Practical Application

Lecture 1 Module Introduction 00:01:10 Duration
Lecture 2 REST APIs & The Rest Of The Course 00:04:00 Duration
Lecture 3 Understanding the Frontend Setup 00:04:18 Duration
Lecture 4 Planning the API 00:03:03 Duration
Lecture 5 Fetching Lists of Posts 00:06:19 Duration
Lecture 6 Adding a Create Post Endpoint 00:07:36 Duration
Lecture 7 Adding Server Side Validation 00:06:19 Duration
Lecture 8 Setting Up a Post Model 00:05:14 Duration
Lecture 9 Storing Posts in the Database 00:03:32 Duration
Lecture 10 Static Images & Error Handling 00:06:53 Duration
Lecture 11 Fetching a Single Post 00:07:48 Duration
Lecture 12 Image Names & Windows
Lecture 13 Uploading Images 00:08:34 Duration
Lecture 14 Updating Posts 00:14:02 Duration
Lecture 15 Deleting Posts 00:04:17 Duration
Lecture 16 Adding Pagination 00:06:20 Duration
Lecture 17 Adding a User Model 00:04:08 Duration
Lecture 18 Adding User Signup Validation 00:06:29 Duration
Lecture 19 Signing Users Up 00:07:24 Duration
Lecture 20 How Does Authentication Work 00:03:10 Duration
Lecture 21 Starting with User Login 00:03:51 Duration
Lecture 22 Logging In & Creating JSON Web Tokens (JWTs) 00:07:54 Duration
Lecture 23 Using & Validating the Token 00:09:43 Duration
Lecture 24 Adding Auth Middleware to All Routes 00:01:52 Duration
Lecture 25 Connecting Posts & Users 00:06:14 Duration
Lecture 26 Adding Authorization Checks 00:03:51 Duration
Lecture 27 Clearing Post-User Relations 00:02:54 Duration
Lecture 28 Wrap Up 00:02:29 Duration
Lecture 29 Useful Resources & Links

Section 26 : Understanding Async Await in Node

Lecture 1 Module Introduction 00:00:59 Duration
Lecture 2 What is Async Await All About 00:03:01 Duration
Lecture 3 Transforming Then Catch to Async Await 00:04:26 Duration
Lecture 4 Top-level await 00:01:18 Duration
Lecture 5 The User Name is Missing!
Lecture 6 Wrap Up 00:03:04 Duration
Lecture 7 Useful Resources & Links

Section 27 : Understanding Websockets & Socket

Lecture 1 Module Introduction 00:00:55 Duration
Lecture 2 What Are Websockets & Why Would You Use Them 00:04:17 Duration
Lecture 3 Websocket Solutions - An Overview 00:01:36 Duration
Lecture 4 Setting Up Socket 00:03:56 Duration
Lecture 5 Establishing a Connection From the Client 00:02:27 Duration
Lecture 6 Identifying Realtime Potential 00:02:43 Duration
Lecture 7 Sharing the IO Instance Across Files 00:02:47 Duration
Lecture 8 Synchronizing POST Additions 00:07:14 Duration
Lecture 9 Fixing a Bug - The Missing Username 00:01:45 Duration
Lecture 10 Updating Posts On All Connected Clients 00:03:59 Duration
Lecture 11 Sorting Correctly 00:01:00 Duration
Lecture 12 Deleting Posts Across Clients 00:02:32 Duration
Lecture 13 Wrap Up 00:01:49 Duration
Lecture 14 Useful Resources & Links

Section 28 : Working with GraphQL

Lecture 1 Module Introduction 00:00:57 Duration
Lecture 2 What is GraphQL
Lecture 3 Understanding the Setup & Writing our First Query 00:11:15 Duration
Lecture 4 Defining a Mutation Schema 00:05:43 Duration
Lecture 5 Adding a Mutation Resolver & GraphiQL 00:09:43 Duration
Lecture 6 Adding Input Validation 00:04:20 Duration
Lecture 7 Handling Errors 00:03:46 Duration
Lecture 8 Connecting the Frontend to the GraphQL API 00:06:49 Duration
Lecture 9 Adding a Login Query & a Resolver 00:06:21 Duration
Lecture 10 Adding Login Functionality 00:04:57 Duration
Lecture 11 Adding a Create Post Mutation 00:07:23 Duration
Lecture 12 Extracting User Data From the Auth Token 00:05:49 Duration
Lecture 13 Sending the Create Post Query 00:04:46 Duration
Lecture 14 Fixing a Bug & Adding New Posts Correctly 00:02:54 Duration
Lecture 15 Adding a Get Post Query & Resolver 00:04:53 Duration
Lecture 16 Sending Create Post and Get Post Queries 00:05:14 Duration
Lecture 17 Adding Pagination 00:04:28 Duration
Lecture 18 Uploading Images 00:10:27 Duration
Lecture 19 Fetching the imageUrl
Lecture 20 Viewing a Single Post 00:06:07 Duration
Lecture 21 Updating Posts 00:09:32 Duration
Lecture 22 Deleting Posts 00:09:26 Duration
Lecture 23 Adding Posts & Pagination
Lecture 24 Managing the User Status 00:09:17 Duration
Lecture 25 Using Variables 00:16:06 Duration
Lecture 26 Fixing a Pagination Bug 00:02:49 Duration
Lecture 27 Wrap Up 00:03:36 Duration
Lecture 28 Useful Resources & Links

Section 29 : Deploying our App

Lecture 1 Module Introduction 00:01:16 Duration
Lecture 2 Deploying Different Kinds of Apps 00:01:39 Duration
Lecture 3 Deployment Preparations 00:04:53 Duration
Lecture 4 Using Environment Variables 00:11:12 Duration
Lecture 5 Using Production API Keys 00:01:19 Duration
Lecture 6 Setting Secure Response Headers with Helmet 00:02:41 Duration
Lecture 7 Compressing Assets 00:02:33 Duration
Lecture 8 Setting Up Request Logging 00:03:35 Duration
Lecture 9 More on Logging
Lecture 10 Setting Up a SSL Server 00:09:55 Duration
Lecture 11 Using a Hosting Provider 00:04:25 Duration
Lecture 12 Understanding the Project & the Git Setup 00:04:03 Duration
Lecture 13 A Deployment Example with Heroku 00:10:26 Duration
Lecture 14 Storing User-generated Files on Heroku
Lecture 15 Deploying APIs 00:02:52 Duration
Lecture 16 Useful Resources & Links

Section 30 : Testing Node

Lecture 1 Module Introduction 00:00:44 Duration
Lecture 2 What is Testing 00:02:42 Duration
Lecture 3 Why & How 00:03:26 Duration
Lecture 4 Setup and Writing a First Test 00:09:40 Duration
Lecture 5 Testing the Auth Middleware 00:12:33 Duration
Lecture 6 Organizing Multiple Tests 00:04:12 Duration
Lecture 7 What Not To Test! 00:08:03 Duration
Lecture 8 Using Stubs 00:08:39 Duration
Lecture 9 Testing Controllers 00:08:03 Duration
Lecture 10 Testing Asynchronous Code 00:05:54 Duration
Lecture 11 Setting up a Testing Database 00:06:34 Duration
Lecture 12 Testing Code With An Active Database 00:06:33 Duration
Lecture 13 Cleaning Up 00:03:29 Duration
Lecture 14 Hooks 00:04:34 Duration
Lecture 15 Testing Code That Requires Authentication 00:12:38 Duration
Lecture 16 Wrap Up & Mastering Tests 00:04:23 Duration
Lecture 17 Useful Resources & Links

Section 31 : Node

Lecture 1 Module Introduction 00:01:02 Duration
Lecture 2 npm & Node 00:01:42 Duration
Lecture 3 Using npm 00:07:52 Duration
Lecture 4 Versioning in package
Lecture 5 What is a Build Tool 00:05:02 Duration
Lecture 6 Using Node 00:05:50 Duration
Lecture 7 Useful Resources & Links

Section 32 : Modern JavaScript & NodeJS

Lecture 1 Module Introduction 00:02:28 Duration
Lecture 2 What is this Module About 00:02:19 Duration
Lecture 3 Working with ES Modules & Node 00:09:33 Duration
Lecture 4 More on ES Modules 00:06:27 Duration
Lecture 5 Node Core Modules & Promises 00:05:19 Duration
Lecture 6 Module Resources

Section 33 : NodeJS & TypeScript

Lecture 1 Module Introduction 00:01:23 Duration
Lecture 2 TypeScript What & Why 00:06:03 Duration
Lecture 3 TypeScript Setup 00:04:09 Duration
Lecture 4 Assigning Types 00:03:29 Duration
Lecture 5 Type Inference & Type Casting 00:06:10 Duration
Lecture 6 Configuring TypeScript 00:05:01 Duration
Lecture 7 Working with Union Types 00:04:23 Duration
Lecture 8 Using Object & Array Types 00:06:17 Duration
Lecture 9 Working with Type Aliases & Interfaces 00:03:22 Duration
Lecture 10 Understanding Generics 00:05:10 Duration
Lecture 11 A First Summary 00:00:34 Duration
Lecture 12 Node & TypeScript Setup 00:02:14 Duration
Lecture 13 Getting Started with Node and TypeScript 00:09:31 Duration
Lecture 14 Writing TypeScript Express 00:03:59 Duration
Lecture 15 Adding REST Routes with TypeScript 00:06:42 Duration
Lecture 16 Finishing the REST Routes 00:05:53 Duration
Lecture 17 Testing the API 00:04:52 Duration
Lecture 18 Using Type Casting 00:04:22 Duration
Lecture 19 Moving to a Better Project Structure 00:03:45 Duration
Lecture 20 Wrap Up 00:02:50 Duration
Lecture 21 Module Resources

Section 34 : An Introduction to Deno

Lecture 1 Module Introduction 00:01:36 Duration
Lecture 2 What is Deno 00:03:09 Duration
Lecture 3 Why Deno 00:01:55 Duration
Lecture 4 Deno Setup 00:05:51 Duration
Lecture 5 Writing First Deno Code 00:04:18 Duration
Lecture 6 The Deno Runtime (Namespace) API 00:03:13 Duration
Lecture 7 Using the Runtime API 00:05:27 Duration
Lecture 8 Working with Deno Permissions 00:04:31 Duration
Lecture 9 Repeating the Example with Node 00:04:17 Duration
Lecture 10 How Deno Features Are Organized 00:04:29 Duration
Lecture 11 Using the Standard Library 00:08:30 Duration
Lecture 12 Creating a Webserver 00:02:55 Duration
Lecture 13 Using the Oak Framework with Deno 00:09:48 Duration
Lecture 14 More on Module URLs
Lecture 15 An Example Node REST API 00:12:15 Duration
Lecture 16 Re-building the REST API with Deno 00:16:19 Duration
Lecture 17 Should You Switch From Node to Deno 00:05:05 Duration
Lecture 18 Module Resources

Section 35 : Deno, CRUD & Databases (MongoDB)

Lecture 1 Module Introduction 00:01:01 Duration
Lecture 2 App Setup 00:04:07 Duration
Lecture 3 Handling CORS Errors 00:07:16 Duration
Lecture 4 Connecting Deno to MongoDB 00:08:05 Duration
Lecture 5 Using the MongoDB Client Module 00:10:34 Duration
Lecture 6 Finishing the Deno MongoDB CRUD Operations 00:05:29 Duration
Lecture 7 Wrap Up 00:01:11 Duration
Lecture 8 Module Resources

Section 36 : Roundup

Lecture 1 Course Roundup 00:02:40 Duration
Lecture 2 Course Slides