Course Highlights
  • Becoming familiar with the NestJS framework and its components
  • Designing and developing REST APIs performing CRUD operations
  • Authentication and Authorization for back-end applications
  • Using TypeORM for database interaction
  • Security best practices, password hashing and storing sensitive information
  • Persisting data using a database
  • Deploying back-end applications at a production-ready state to Amazon Web Services
  • Writing clean, maintainable code in-line with industry standards
  • Utilising the NestJS Command Line Interface (CLI)
  • Using Postman for testing back-end services
  • Using pgAdmin as an interface tool to manage PostgreSQL databases
  • Implement efficient logging in a back-end application
  • Environment-based configuration management and environment variables
  • Implementing data validation and using Pipes
  • Guarding endpoints for authorized users using Guards
  • Modelling entities for the persistence layer
  • TypeScript best practices
  • Handling asynchronous operations using async-await
  • Using Data Transfer Objects (DTO)
  • Hands-on experience with JSON Web Tokens (JWT)
  • Unit testing NestJS applications
  • Using GraphQL with NestJS
  • Database persistence with MongoDB
Skills you will learn!
Curriculum

5 Topics
Welcome to the course!
Welcome! Support My Vision
Installing Node.js and Yarn
Installing the NestJS CLI
(Optional) Installing VSCode and Extensions

25 Topics
Project Overview
Creating our project via the NestJS CLI
NestJS Project Structure
Introduction to NestJS Modules
Creating a Tasks Module
Introduction to NestJS Controllers
Creating at Tasks Controller
Introduction to NestJS Providers and Services
Creating a Tasks Service
Feature: Getting All Tasks
Installing Postman
Creating a Postman Collection
Defining a Task Model
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
Summary Quiz
Section Code

7 Topics
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
Section Code

19 Topics
Introduction to Persistence
Installing Docker and pgAdmin
Running PostgreSQL via Docker
Setting up pgAdmin
Creating a Database using pgAdmin
Introduction to TypeORM
Setting up a Database Connection
Creating a Task Entity
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
Small Change Needed
Persistence: Getting All Tasks
Section Code

15 Topics
Intro to Authentication and Authorization
Setting up AuthModule User Entity and User Repository
Feature: Signing Up
Validation: Credentials and Password Strength
Error Handling: Username Conflicts
Securely Storing Passwords
Password Hashing With Bcrypt
Feature: Signing In
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
Section Code

9 Topics
Tasks and Users - Database Relation
Make Users Own Tasks
Serialize User Data
Restricting Getting All Tasks
BUG FIX: Getting All Tasks
Restricting Getting a Task By ID
Restricting Status Updates
Restricting Deleting A Task
Section Code

1 Topic
THANK YOU! (+ Promotion)

3 Topics
Introduction to Logging
Implementing Logs in our NestJS app
Section Code

8 Topics
Introduction to Configuration
Windows: Environment Variables
Quick Intro to Environment Variables
Setting up ConfigModule
TypeORM Configuration
Config Schema Validation
JWT Secret Configuration
Section Code

2 Topics
Front-end Application
Section Code

9 Topics
DISCLAIMER: Potential Costs
Signing up to Heroku
Creating a Heroku Application
Installing the the Heroku CLI
Postgres on Heroku
Changes in our NestJS App
Deploying NestJS to Heroku
Deploying Front-end to GitHub Pages
Section Code

6 Topics
Unit Testing Crash Course: Basics
Unit Testing Crash Course: First Tests
IMPORTANT: Fixing import paths
Testing TasksService - Part 1
Testing TasksService - Part 2
Section Code

28 Topics
GraphQL + MongoDB: Section Introduction
Project Overview: School Management
MongoDB Installation
Robo 3T - Connecting to the MongoDB Database
Project setup
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
Section Code

  Write a Review

NestJS Zero to Hero - Modern TypeScript Back-end Development

Go to Paid Course