Creating our project via the NestJS CLI 
 
Introduction to NestJS Modules 
 
Introduction to NestJS Controllers 
 
Creating at Tasks Controller 
 
Introduction to NestJS Providers and Services 
 
Feature: Getting All Tasks 
 
Creating a Postman Collection 
 
Feature: Creating a Task (Part 1 - Controller) 
 
Feature: Creating a Task (Part 2 - Service) 
 
Intro to Data Transfer Objects (DTO) 
 
Implementing CreateTaskDto 
 
Feature: Getting a Task by ID 
 
Challenge: Deleting a Task 
 
Solution: Deleting a Task 
 
Challenge: Update Task Status 
 
Solution: Update Task Status 
 
Feature: Searching and Filtering 
 
Introduction to NestJS Pipes 
 
ValidationPipe: Creating a Task 
 
Error Handling: Getting a non-existing Task 
 
Error Handling: Deleting a non-existing Task 
 
Validation: Update Task Status 
 
Challenge: Validating Task Filtering and Search 
 
Introduction to Persistence 
 
Installing Docker and pgAdmin 
 
Running PostgreSQL via Docker 
 
Creating a Database using pgAdmin 
 
Setting up a Database Connection 
 
Active Record VS Data Mapper Patterns 
 
Creating a Tasks Repository 
 
Refactoring for Tasks Service 
 
Persistence: Getting a Task by ID 
 
Persistence: Creating a Task 
 
(Challenge) Persistence: Deleting a Task 
 
(Solution) Persistence: Deleting a Task 
 
Persistence: Update Task Status 
 
Persistence: Getting All Tasks 
 
Intro to Authentication and Authorization 
 
Setting up AuthModule User Entity and User Repository 
 
Validation: Credentials and Password Strength 
 
Error Handling: Username Conflicts 
 
Securely Storing Passwords 
 
Password Hashing With Bcrypt 
 
Intro to JSON Web Tokens (JWT) 
 
Setting up the JWT Module and Passport.js 
 
Signing a JWT Token on Sign In (Authentication) 
 
Implementing JWT Validation 
 
Custom @GetUser Decorator 
 
Guarding the Tasks Routes 
 
Tasks and Users - Database Relation 
 
Restricting Getting All Tasks 
 
BUG FIX: Getting All Tasks 
 
Restricting Getting a Task By ID 
 
Restricting Status Updates 
 
Restricting Deleting A Task 
 
DISCLAIMER: Potential Costs 
 
Creating a Heroku Application 
 
Installing the the Heroku CLI 
 
Changes in our NestJS App 
 
Deploying NestJS to Heroku 
 
Deploying Front-end to GitHub Pages 
 
Unit Testing Crash Course: Basics 
 
Unit Testing Crash Course: First Tests 
 
IMPORTANT: Fixing import paths 
 
Testing TasksService - Part 1 
 
Testing TasksService - Part 2 
 
GraphQL + MongoDB: Section Introduction 
 
Project Overview: School Management 
 
Robo 3T - Connecting to the MongoDB Database 
 
Ensure NestJS 7 Installation 
 
Installing GraphQL Dependencies 
 
IMPORTANT! GraphQL installation version 
 
Creating the Lesson Module 
 
Defining the Lesson GraphQL Type 
 
Creating the Lesson Resolver 
 
Using the GraphQL Playground 
 
Persistence: TypeORM MongoDB and our Lesson Entity 
 
LessonService and createLesson method 
 
Create Lesson GraphQL Mutation 
 
getLesson GraphQL Query with MongoDB 
 
Validation: Create Lesson Input 
 
Challenge: Get All Lessons GraphQL Query 
 
Creating the Student Module 
 
Challenge: Defining the Student Entity 
 
Challenge: Create Student Mutation 
 
Challenge: Get All Students GraphQL Query 
 
Challenge: Get Student by ID Query 
 
Assign Students To Lesson GraphQL Mutation 
 
Improvement: Assign Students Upon Lesson Creation 
 
Resolve "students" Field in Lesson 
 
Additional Resources: GraphQL