Introduction to NestJS & Pre-requisites
  • Welcome to the course!
  • What is NestJS?
  • Installing Node.js and NPM
  • Installing Yarn
  • Installing the NestJS CLI
  • Installing Postman
  • (Optional) Installing Visual Studio Code
REST API - Task Management Application (CRUD)
  • Project Overview: Task Management Application
  • Creating a project via the CLI and an introduction to a NestJS project structure
  • Introduction to NestJS Modules
  • Creating a Tasks Module
  • Introduction to NestJS Controllers
  • Creating a Tasks Controller
  • Introduction to NestJS Providers and Services
  • Creating a Tasks Service
  • Feature: Getting all Tasks
  • Defining a Task Model
  • NOTE: Imprting UUID in the next lecture
  • Feature: Creating a Task (Part 1: Service)
  • Feature: Creating a Task (Part 2: Controller)
  • Introduction to Data Transfer Objects (DTOs)
  • Creating a CreateTaskDto
  • Feature: Getting a Task by ID
  • Challenge: Deleting a Task
  • Solution: Deleting a Task
  • Challenge: Updating a Task's Status
  • Solution: Updating a Task's Status
  • Feature: Searching and Filtering Tasks
  • Summary Quiz
  • NEW COURSE + DISCOUNT COUPON
Validation and Error Handling
  • Introduction to NestJS Pipes
  • ValidationPipe: Creating a Task
  • Error Handling: Getting a non-existing Task
  • Error Handling: Deleting a non-existing Task
  • Custom Pipe: Validating the Task Status
  • ValidationPipe: Task Filtering and Search
  • Summary Quiz
  • Source Code - Validation and Error Handling
Data Persistence - PostgreSQL & TypeORM
  • Installing PostgreSQL and pgAdmin
  • Using pgAdmin to create a Database
  • Introduction to Object Relational Mapping and TypeORM
  • IMPORTANT: TypeORM Entities Configuration
  • Connecting NestJS to a database using TypeORM
  • Creating a Task Entity
  • Creating a Task Repository
  • Preparation for Task Service Refactoring
  • Persistence: Getting a Task by ID
  • Persistence: Creating a Task
  • Challenge: Delete Task Persistence
  • Solution: Delete Task Persistence
  • Persistence: Updating Task Status
  • IMPORTANT: Before Persistence of Getting Tasks
  • Persistence: Getting Tasks (with or without filters)
  • Summary Quiz
  • Source Code - Data Persistence
(Part 1) Authentication - Setting up JWT/Passport.js
  • Setting up AuthModule, User Entity and UserRepository
  • Feature: Sign Up
  • Validation: AuthCredentialsDto, password strength
  • Error Handling: Duplicate Usernames
  • Security: Hashing Passwords & Using Salts
  • Feature: Validating Password - Sign In
  • Introduction to JSON Web Tokens (JWT)
  • Setting up the JWT Module and Passport.js
  • Signing a JWT Token Upon Authentication
  • Setting up the JWT Strategy for Authorization
  • IMPORTANT: GetUser Decorator
  • Custom @GetUser() Decorator
  • Guarding the Tasks Routes (TasksController)
  • Summary Quiz
(Part 2) Authorization - Task Ownership
  • Tasks and Users - Database Relation
  • Authorization: Creating a Task For User
  • Authorization: Getting Tasks For User
  • Authorization: Getting a User's Task
  • Authorization: Updating a User's Task Status
  • Authorization: Deleting a User's Task
  • Source Code - Authentication & Authorization
(Bonus) Logging
  • Introduction to Logging
  • Applying logging in our application
(Bonus) Pro-Production: Configuration
  • Windows: Environment Variables
  • Introduction to Configuration
  • Configuration Management Set-up
  • Applying Configuration - Codebase (Part 1)
  • Source Code - Configuration
(Bonus) Front-end Application
  • Front-end Application Set-up (Development Mode)
(Bonus) Deployment - Amazon Web Services (AWS)
  • Signing up to Amazon Web Services and signing up
  • Amazon S3: Setting up a Bucket (Front-end Hosting)
  • Enabling CORS from the S3 Front-end Application
  • IMPORTANT: bcryptjs NPM package
  • TIP: Before Deploying to Production
  • Pre-production package.json Adjustments