NestJS Zero to Hero Modern TypeScript Backend Development

Develop and deploy enterprise back-end applications following best practices using Node.js and TypeScript
NestJS Zero to Hero Modern TypeScript Backend Development
File Size :
3.47 GB
Total length :
8h 45m

Category

Instructor

Ariel Weinberger

Language

Last update

7/2021

Ratings

4.5/5

NestJS Zero to Hero Modern TypeScript Backend Development

What you’ll learn

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

NestJS Zero to Hero Modern TypeScript Backend Development

Requirements

Having a basic understanding of JavaScript and/or NodeJS
Having basic knowledge of TypeScript is recommended, but not required

Description

NestJS is a Node.js back-end development framework built upon Express, leveraging the power of TypeScript.NestJS leverages the incredible popularity and robustness of JavaScript as a language and Node.js as a technology. It is inspired by common libraries and frameworks such as Angular, React and Vue which improve developer productivity and experience.Even considering the amount of superb libraries, helpers and tools that exist for server-side Node.js, none of them effectively solve the main problem – the architecture of an application.NestJS provides an out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled and easily maintainable applications.Recently, the NestJS framework is gaining extreme popularity due to its incredible features;Leverages TypeScript – strongly typed language which is a super-set of JavaScriptSimple to use, easy to learn and easy to masterPowerful Command Line Interface (CLI) tool that boosts productivity and ease of developmentDetailed, well-maintained documentationActive codebase development and maintenanceOpen-source (MIT license)Supports dozens nest-specific modules that help you easily integrate with common technologies and concepts such as TypeORM, Mongoose, GraphQL, Logging, Validation, Caching, Websockets and much moreEasy of unit-testing applicationsMade for Monoliths and Micro-services (entire section in the documentation regarding the Microservice type of a NestJS application, as well as techniques and recipes).In this course I am going to guide you through the process of planning, developing and deploying a fully-featured back-end application, based on my experience developing and maintaining systems that support dozens of millions of concurrent users at scale.

Overview

Section 1: Introduction to NestJS & Pre-requisites

Lecture 1 NEW COURSE VERSION LIVE (JUNE 2021)

Lecture 2 Welcome to the course!

Lecture 3 Installing Node.js and Yarn

Lecture 4 Installing the NestJS CLI

Lecture 5 (Optional) Installing VSCode and Extensions

Section 2: Task Management Application (REST API)

Lecture 6 Project Overview

Lecture 7 Creating our project via the NestJS CLI

Lecture 8 NestJS Project Structure

Lecture 9 Introduction to NestJS Modules

Lecture 10 Creating a Tasks Module

Lecture 11 Introduction to NestJS Controllers

Lecture 12 Creating at Tasks Controller

Lecture 13 Introduction to NestJS Providers and Services

Lecture 14 Creating a Tasks Service

Lecture 15 Feature: Getting All Tasks

Lecture 16 Installing Postman

Lecture 17 Creating a Postman Collection

Lecture 18 Defining a Task Model

Lecture 19 Feature: Creating a Task (Part 1 – Controller)

Lecture 20 Feature: Creating a Task (Part 2 – Service)

Lecture 21 Intro to Data Transfer Objects (DTO)

Lecture 22 Implementing CreateTaskDto

Lecture 23 Feature: Getting a Task by ID

Lecture 24 Challenge: Deleting a Task

Lecture 25 Solution: Deleting a Task

Lecture 26 Challenge: Update Task Status

Lecture 27 Solution: Update Task Status

Lecture 28 Feature: Searching and Filtering

Lecture 29 Section Code

Section 3: Validation and Error Handling

Lecture 30 Introduction to NestJS Pipes

Lecture 31 ValidationPipe: Creating a Task

Lecture 32 Error Handling: Getting a non-existing Task

Lecture 33 Error Handling: Deleting a non-existing Task

Lecture 34 Validation: Update Task Status

Lecture 35 Challenge: Validating Task Filtering and Search

Lecture 36 Section Code

Section 4: Data Persistence – PostgreSQL and TypeORM

Lecture 37 Introduction to Persistence

Lecture 38 Installing Docker and pgAdmin

Lecture 39 Running PostgreSQL via Docker

Lecture 40 Setting up pgAdmin

Lecture 41 Creating a Database using pgAdmin

Lecture 42 Introduction to TypeORM

Lecture 43 Setting up a Database Connection

Lecture 44 Creating a Task Entity

Lecture 45 Active Record VS Data Mapper Patterns

Lecture 46 Creating a Tasks Repository

Lecture 47 Refactoring for Tasks Service

Lecture 48 Persistence: Getting a Task by ID

Lecture 49 Persistence: Creating a Task

Lecture 50 (Challenge) Persistence: Deleting a Task

Lecture 51 (Solution) Persistence: Deleting a Task

Lecture 52 Persistence: Update Task Status

Lecture 53 Small Change Needed

Lecture 54 Persistence: Getting All Tasks

Lecture 55 Section Code

Section 5: Auth Part 1 – Authentication

Lecture 56 Intro to Authentication and Authorization

Lecture 57 Setting up AuthModule, User Entity and User Repository

Lecture 58 Feature: Signing Up

Lecture 59 Validation: Credentials and Password Strength

Lecture 60 Error Handling: Username Conflicts

Lecture 61 Securely Storing Passwords

Lecture 62 Password Hashing With Bcrypt

Lecture 63 Feature: Signing In

Lecture 64 Intro to JSON Web Tokens (JWT)

Lecture 65 Setting up the JWT Module and Passport.js

Lecture 66 Signing a JWT Token on Sign In (Authentication)

Lecture 67 Implementing JWT Validation

Lecture 68 Custom @GetUser Decorator

Lecture 69 Guarding the Tasks Routes

Lecture 70 Section Code

Section 6: Auth Part 2 – Task Ownership and Restrictions

Lecture 71 Tasks and Users – Database Relation

Lecture 72 Make Users Own Tasks

Lecture 73 Serialize User Data

Lecture 74 Restricting Getting All Tasks

Lecture 75 BUG FIX: Getting All Tasks

Lecture 76 Restricting Getting a Task By ID

Lecture 77 Restricting Status Updates

Lecture 78 Restricting Deleting A Task

Lecture 79 Section Code

Section 7: THANK YOU!

Lecture 80 THANK YOU! (+ Promotion)

Section 8: (Bonus) Logging

Lecture 81 Introduction to Logging

Lecture 82 Implementing Logs in our NestJS app

Lecture 83 Section Code

Section 9: (Bonus) Configuration Management

Lecture 84 Introduction to Configuration

Lecture 85 Windows: Environment Variables

Lecture 86 Quick Intro to Environment Variables

Lecture 87 Setting up ConfigModule

Lecture 88 TypeORM Configuration

Lecture 89 Config Schema Validation

Lecture 90 JWT Secret Configuration

Lecture 91 Section Code

Section 10: (Bonus) Front-end Application

Lecture 92 Front-end Application

Lecture 93 Section Code

Section 11: (Bonus) Deployment

Lecture 94 DISCLAIMER: Potential Costs

Lecture 95 Signing up to Heroku

Lecture 96 Creating a Heroku Application

Lecture 97 Installing the the Heroku CLI

Lecture 98 Postgres on Heroku

Lecture 99 Changes in our NestJS App

Lecture 100 Deploying NestJS to Heroku

Lecture 101 Deploying Front-end to GitHub Pages

Lecture 102 Section Code

Section 12: (Bonus) Unit Testing

Lecture 103 Unit Testing Crash Course: Basics

Lecture 104 Unit Testing Crash Course: First Tests

Lecture 105 IMPORTANT: Fixing import paths

Lecture 106 Testing TasksService – Part 1

Lecture 107 Testing TasksService – Part 2

Lecture 108 Section Code

Section 13: GraphQL + MongoDB

Lecture 109 GraphQL + MongoDB: Section Introduction

Lecture 110 Project Overview: School Management

Lecture 111 MongoDB Installation

Lecture 112 Robo 3T – Connecting to the MongoDB Database

Lecture 113 Project setup

Lecture 114 Ensure NestJS 7 Installation

Lecture 115 Installing GraphQL Dependencies

Lecture 116 IMPORTANT! GraphQL installation version

Lecture 117 Creating the Lesson Module

Lecture 118 Defining the Lesson GraphQL Type

Lecture 119 Creating the Lesson Resolver

Lecture 120 Using the GraphQL Playground

Lecture 121 Persistence: TypeORM, MongoDB and our Lesson Entity

Lecture 122 LessonService and createLesson method

Lecture 123 Create Lesson GraphQL Mutation

Lecture 124 getLesson GraphQL Query with MongoDB

Lecture 125 Validation: Create Lesson Input

Lecture 126 Challenge: Get All Lessons GraphQL Query

Lecture 127 Creating the Student Module

Lecture 128 Challenge: Defining the Student Entity

Lecture 129 Challenge: Create Student Mutation

Lecture 130 Challenge: Get All Students GraphQL Query

Lecture 131 Challenge: Get Student by ID Query

Lecture 132 Assign Students To Lesson GraphQL Mutation

Lecture 133 Improvement: Assign Students Upon Lesson Creation

Lecture 134 Resolve “students” Field in Lesson

Lecture 135 Additional Resources: GraphQL

Lecture 136 Section Code

Intermediate JavaScript developers who want to dive into back-end development,Any developers willing to apply TypeScript on the back-end,Developers eager to learn how to develop performant, secure and production-ready REST APIs following best practices,Developers who want to learn how to deploy their application to the cloud (Amazon Web Services),Developers who want to follow building a practical, real-world application from zero to production

Course Information:

Udemy | English | 8h 45m | 3.47 GB
Created by: Ariel Weinberger

You Can See More Courses in the Developer >> Greetings from CourseDown.com

New Courses

Scroll to Top