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
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