NestJS Zero to Hero - Modern TypeScript Back-end Development
NestJS Zero to Hero - Modern TypeScript Back-end Development

Develop and deploy enterprise back-end applications following best practices using Node.js and TypeScript

Created by Ariel Weinberger
Language English

NestJS Zero to Hero - Modern TypeScript Back-end Development

NestJS Zero to Hero - Modern TypeScript Back-end Development
NestJS Zero to Hero - Modern TypeScript Back-end Development

Develop and deploy enterprise back-end applications following best practices using Node.js and TypeScript

Created by Ariel Weinberger
Language English
1. Introduction to NestJS Pre-requisites
  • 1. Welcome to the course 00:01:11
  • 2. Installing the NestJS CLI 00:00:57
  • 3. (Optional) Installing VSCode and Extensions 00:02:55
  • Installing Node.js and Yarn .html
  • NEW COURSE VERSION LIVE (JUNE 2021) .html
2. Task Management Application (REST API)
  • 1. Project Overview 00:05:17
  • 2. Creating our project via the NestJS CLI 00:02:04
  • 3. NestJS Project Structure 00:06:36
  • 4. Introduction to NestJS Modules 00:02:53
  • 5. Creating a Tasks Module 00:03:32
  • 6. Introduction to NestJS Controllers 00:03:46
  • 7. Creating at Tasks Controller 00:03:37
  • 8. Introduction to NestJS Providers and Services 00:05:02
  • 9. Creating a Tasks Service 00:05:54
  • 10. Feature Getting All Tasks 00:07:30
  • 11. Creating a Postman Collection 00:01:43
  • 12. Defining a Task Model 00:05:01
  • 13. Feature Creating a Task (Part 1 - Controller) 00:04:59
  • 14. Feature Creating a Task (Part 2 - Service) 00:06:36
  • 15. Intro to Data Transfer Objects (DTO) 00:05:36
  • 16. Implementing CreateTaskDto 00:04:58
  • 17. Feature Getting a Task by ID 00:05:43
  • 18. Challenge Deleting a Task 00:00:52
  • 19. Solution Deleting a Task 00:04:23
  • 20. Challenge Update Task Status 00:01:19
  • 21. Solution Update Task Status 00:05:27
  • 22. Feature Searching and Filtering 00:08:49
  • Installing Postman .html
  • Section Code .html
3. Validation and Error Handling
  • 1. External URLs .txt
  • 1. Introduction to NestJS Pipes 00:04:14
  • 2. External URLs .txt
  • 2. ValidationPipe Creating a Task 00:04:31
  • 3. Error Handling Getting a non-existing Task 00:04:16
  • 4. Error Handling Deleting a non-existing Task 00:01:09
  • 5. Validation Update Task Status 00:03:27
  • 6. Challenge Validating Task Filtering and Search 00:02:42
  • Section Code .html
4. Data Persistence - PostgreSQL and TypeORM
  • 1. Introduction to Persistence 00:00:30
  • 2. External URLs .txt
  • 2. Running PostgreSQL via Docker 00:04:02
  • 3. Setting up pgAdmin 00:01:45
  • 4. Creating a Database using pgAdmin 00:00:54
  • 5. Introduction to TypeORM 00:02:57
  • 6. Setting up a Database Connection 00:04:29
  • 7. Creating a Task Entity 00:03:51
  • 8. Active Record VS Data Mapper Patterns 00:03:40
  • 8. External URLs .txt
  • 9. Creating a Tasks Repository 00:03:33
  • 10. Refactoring for Tasks Service 00:03:44
  • 11. External URLs .txt
  • 11. Persistence Getting a Task by ID 00:08:33
  • 12. Persistence Creating a Task 00:07:31
  • 13. (Challenge) Persistence Deleting a Task 00:01:22
  • 14. (Solution) Persistence Deleting a Task 00:04:58
  • 15. Persistence Update Task Status 00:02:40
  • 16. Small Change Needed 00:01:40
  • 17. Persistence Getting All Tasks 00:12:22
  • Installing Docker and pgAdmin .html
  • Section Code .html
5. Auth Part 1 - Authentication
  • 1. Intro to Authentication and Authorization 00:01:12
  • 2. Setting up AuthModule User Entity and User Repository 00:05:05
  • 3. Feature Signing Up 00:08:26
  • 4. External URLs .txt
  • 4. Validation Credentials and Password Strength 00:04:12
  • 5. Error Handling Username Conflicts 00:06:42
  • 6. Securely Storing Passwords 00:07:22
  • 7. Password Hashing With Bcrypt 00:04:25
  • 8. Feature Signing In 00:04:42
  • 9. External URLs .txt
  • 9. Intro to JSON Web Tokens (JWT) 00:05:54
  • 10. Setting up the JWT Module and Passport.js 00:03:34
  • 11. Signing a JWT Token on Sign In (Authentication) 00:07:08
  • 12. Implementing JWT Validation 00:11:38
  • 13. Custom GetUser Decorator 00:03:14
  • 14. Guarding the Tasks Routes 00:02:00
  • Section Code .html
6. Auth Part 2 - Task Ownership and Restrictions
  • 1. Tasks and Users - Database Relation 00:03:58
  • 2. Make Users Own Tasks 00:04:36
  • 3. Serialize User Data 00:03:39
  • 4. Restricting Getting All Tasks 00:03:30
  • 5. BUG FIX Getting All Tasks 00:02:34
  • 6. Restricting Getting a Task By ID 00:03:50
  • 7. Restricting Status Updates 00:00:50
  • 8. Restricting Deleting A Task 00:01:23
  • Section Code .html
7. THANK YOU
  • 1. THANK YOU ( Promotion) 00:01:33
8. (Bonus) Logging
  • 1. External URLs .txt
  • 1. Introduction to Logging 00:02:53
  • 2. Implementing Logs in our NestJS app 00:14:54
  • Section Code .html
9. (Bonus) Configuration Management
  • 1. Introduction to Configuration 00:02:10
  • 2. Quick Intro to Environment Variables 00:03:50
  • 3. Setting up ConfigModule 00:09:18
  • 4. TypeORM Configuration 00:09:37
  • 5. Config Schema Validation 00:06:38
  • 6. JWT Secret Configuration 00:04:07
  • Section Code .html
  • Windows Environment Variables .html
10. (Bonus) Front-end Application
  • 1. External URLs .txt
  • 1. Front-end Application 00:05:35
  • Section Code .html
11. (Bonus) Deployment
  • 1. External URLs .txt
  • 1. Signing up to Heroku 00:01:06
  • 2. Creating a Heroku Application 00:00:59
  • 3. Installing the the Heroku CLI 00:01:11
  • 4. Postgres on Heroku 00:02:59
  • 5. Changes in our NestJS App 00:05:11
  • 6. Deploying NestJS to Heroku 00:09:48
  • 7. Deploying Front-end to GitHub Pages 00:08:20
  • 7. External URLs .txt
  • DISCLAIMER Potential Costs .html
  • Section Code .html
12. (Bonus) Unit Testing
  • 1. Unit Testing Crash Course Basics 00:01:46
  • 2. Unit Testing Crash Course First Tests 00:06:38
  • 3. IMPORTANT Fixing import paths 00:01:36
  • 4. Testing TasksService - Part 1 00:18:43
  • 5. Testing TasksService - Part 2 00:07:29
  • Section Code .html
13. GraphQL MongoDB
  • 1. GraphQL MongoDB Section Introduction 00:01:05
  • 2. Project Overview School Management 00:02:38
  • 3. Robo 3T - Connecting to the MongoDB Database 00:01:14
  • 4. Project setup 00:02:04
  • 5. Ensure NestJS 7 Installation 00:00:55
  • 6. Installing GraphQL Dependencies 00:03:02
  • 7. Creating the Lesson Module 00:01:26
  • 8. Defining the Lesson GraphQL Type 00:03:13
  • 9. Creating the Lesson Resolver 00:04:03
  • 10. Using the GraphQL Playground 00:03:44
  • 11. Persistence TypeORM MongoDB and our Lesson Entity 00:06:34
  • 12. LessonService and createLesson method 00:08:05
  • 13. Create Lesson GraphQL Mutation 00:05:01
  • 14. getLesson GraphQL Query with MongoDB 00:03:40
  • 15. Validation Create Lesson Input 00:07:15
  • 16. Challenge Get All Lessons GraphQL Query 00:04:07
  • 17. Creating the Student Module 00:01:44
  • 18. Challenge Defining the Student Entity 00:02:53
  • 19. Challenge Create Student Mutation 00:10:28
  • 20. Challenge Get All Students GraphQL Query 00:02:37
  • 21. Challenge Get Student by ID Query 00:02:44
  • 22. Assign Students To Lesson GraphQL Mutation 00:10:26
  • 23. Improvement Assign Students Upon Lesson Creation 00:03:14
  • 24. Resolve students Field in Lesson 00:08:13
  • Additional Resources GraphQL .html
  • IMPORTANT GraphQL installation version .html
  • MongoDB Installation .html
  • Section Code .html
14. (OLD) Introduction to NestJS Pre-requisites
  • (Optional) Installing Visual Studio Code .html
  • 1. Welcome to the course 00:00:54
  • 2. What is NestJS 00:01:59
  • 3. Installing the NestJS CLI 00:02:04
  • Installing Node.js and NPM .html
  • Installing Node.js and Yarn .html
  • Installing Postman .html
  • Installing Yarn .html
  • NEW COURSE VERSION LIVE (JUNE 2021) .html
  • OLD COURSE CONTENT .html
15. (OLD) REST API - Task Management Application (CRUD)
  • 1. Project Overview Task Management Application 00:05:35
  • 2. Creating a project via the CLI and an introduction to a NestJS project structure 00:06:22
  • 3. Introduction to NestJS Modules 00:02:24
  • 4. Creating a Tasks Module 00:02:43
  • 5. Introduction to NestJS Controllers 00:03:29
  • 6. Creating a Tasks Controller 00:03:09
  • 7. Introduction to NestJS Providers and Services 00:02:56
  • 8. Creating a Tasks Service 00:03:02
  • 9. Feature Getting all Tasks 00:04:37
  • 10. Defining a Task Model 00:04:13
  • 11. Feature Creating a Task (Part 1 Service) 00:05:04
  • NOTE Imprting UUID in the next lecture .html
  • project-overview-edited 00:05:34
16. (OLD) Data Persistence - PostgreSQL TypeORM
  • 1. Feature Creating a Task (Part 2 Controller) 00:05:15
  • 2. Introduction to Data Transfer Objects (DTOs) 00:06:37
  • 3. Creating a CreateTaskDto 00:04:14
  • 4. Feature Getting a Task by ID 00:04:24
  • 5. Challenge Deleting a Task 00:00:44
  • 6. Solution Deleting a Task 00:05:23
  • 7. Challenge Updating a Tasks Status 00:01:14
  • 8. Solution Updating a Tasks Status 00:04:42
  • 9. Feature Searching and Filtering Tasks 00:09:27
  • NEW COURSE DISCOUNT COUPON .html
17. (OLD) Validation and Error Handling
  • 1. Introduction to NestJS Pipes 00:04:58
  • 2. External URLs .txt
  • 2. ValidationPipe Creating a Task 00:03:27
  • 3. Error Handling Getting a non-existing Task 00:03:02
  • 4. Error Handling Deleting a non-existing Task 00:01:43
  • 5. Custom Pipe Validating the Task Status 00:07:05
  • 6. ValidationPipe Task Filtering and Search 00:03:25
  • 7. External URLs .txt
  • 7. Using pgAdmin to create a Database 00:01:51
  • 8. Introduction to Object Relational Mapping and TypeORM 00:02:48
  • 9. Connecting NestJS to a database using TypeORM 00:05:22
  • 10. Creating a Task Entity 00:01:42
  • 10. External URLs .txt
  • 11. Creating a Task Repository 00:03:09
  • 11. External URLs .txt
  • 12. Preparation for Task Service Refactoring 00:02:46
  • 13. External URLs .txt
  • 13. Persistence Getting a Task by ID 00:06:14
  • 14. Persistence Creating a Task 00:06:38
  • 15. Challenge Delete Task Persistence 00:01:47
  • 15. External URLs .txt
  • 16. External URLs .txt
  • 16. Solution Delete Task Persistence 00:07:13
  • 17. Persistence Updating Task Status 00:03:44
  • 18. IMPORTANT Before Persistence of Getting Tasks 00:02:55
  • 19. External URLs .txt
  • 19. Persistence Getting Tasks (with or without filters) 00:09:37
  • IMPORTANT TypeORM Entities Configuration .html
  • Installing PostgreSQL and pgAdmin .html
  • Section Code .html
  • Source Code - Data Persistence .html
  • Source Code - Validation and Error Handling .html
18. (OLD) (Part 1) Authentication - Setting up JWTPassport.js
  • 1. Setting up AuthModule User Entity and UserRepository 00:05:30
  • 2. Feature Sign Up 00:08:53
  • 3. External URLs .txt
  • 3. Validation AuthCredentialsDto password strength 00:04:26
  • 4. Error Handling Duplicate Usernames 00:06:05
  • 4. External URLs .txt
  • 5. Security Hashing Passwords Using Salts 00:08:53
  • 6. Feature Validating Password - Sign In 00:08:32
  • 7. Introduction to JSON Web Tokens (JWT) 00:05:01
  • 8. External URLs .txt
  • 8. Setting up the JWT Module and Passport.js 00:03:39
  • 9. Signing a JWT Token Upon Authentication 00:04:43
  • 10. Setting up the JWT Strategy for Authorization 00:07:46
  • 11. Custom GetUser() Decorator 00:02:50
  • 12. Guarding the Tasks Routes (TasksController) 00:02:16
  • feature-sign-up 00:08:53
  • IMPORTANT GetUser Decorator .html
19. (OLD) (Part 2) Authorization - Task Ownership
  • 1. Tasks and Users - Database Relation 00:03:46
  • 2. Authorization Creating a Task For User 00:04:16
  • 3. Authorization Getting Tasks For User 00:05:27
  • 4. Authorization Getting a Users Task 00:02:53
  • 5. Authorization Updating a Users Task Status 00:01:29
  • 6. Authorization Deleting a Users Task 00:02:16
  • Source Code - Authentication Authorization .html
20. (OLD) (Bonus) Logging
  • 1. Introduction to Logging 00:02:31
  • 2. Applying logging in our application 00:12:44
  • 2. External URLs .txt
  • Section Code .html
21. (OLD) (Bonus) Pro-Production Configuration
  • 1. Introduction to Configuration 00:01:29
  • 2. Configuration Management Set-up 00:05:58
  • 3. Applying Configuration - Codebase (Part 1) 00:08:42
  • Source Code - Configuration .html
  • Windows Environment Variables .html
22. (OLD) (Bonus) Front-end Application
  • 1. External URLs .txt
  • 1. Front-end Application Set-up (Development Mode) 00:06:37
  • Section Code .html
23. (OLD) (Bonus) Deployment - Amazon Web Services (AWS)
  • 1. Amazon S3 Setting up a Bucket (Front-end Hosting) 00:04:50
  • 1. External URLs .txt
  • 2. Enabling CORS from the S3 Front-end Application 00:03:02
  • 3. Pre-production package.json Adjustments 00:01:37
  • 4. Deploying NestJS to Elastic Beanstalk 00:07:45
  • 5. Uploading the Front-end App to S3 00:03:12
  • DISCLAIMER Potential Costs .html
  • IMPORTANT bcryptjs NPM package .html
  • IMPORTANT Change in TypeORM Configuration .html
  • index .html
  • pre-prod-packagejson-changes 00:01:37
  • Section Code .html
  • Signing up to Amazon Web Services and signing up .html
  • Source Code - Deployment .html
  • TIP Before Deploying to Production .html
24. (OLD) (Bonus) Testing a NestJS Application
  • 1. Unit Testing Crash Course - Basics 00:02:40
  • 2. Unit Testing Crash Course - First Tests 00:14:24
  • 3. Testing TasksService - Part 1 - getTasks 00:11:55
  • 4. Testing TasksService - Part 2 - getTaskById 00:07:27
  • 5. (Challenge) Testing TasksService - Part 3 - createTask 00:05:23
  • 6. Testing TasksService - Part 4 - deleteTask 00:04:55
  • 7. (Challenge) Testing TasksService - Part 5 - updateTaskStatus 00:05:54
  • 8. Testing UserRepository 00:16:15
  • 9. Testing User Entity 00:05:30
  • 10. Testing JwtStrategy 00:07:10
  • Domain Names for AWS Applications .html
  • Source Code - Testing .html
  • Testing Final Words .html