NestJS: The Complete Developer's Guide
Build full featured backend APIs incredibly quickly with Nest, TypeORM, and Typescript. Includes testing and deployment!
Lo que serás capaz de hacer
Authentication/Authorization? Covered. Automated Testing? Yep, it's here! Production Deployment? Of course! Congratulations! You've found the complete guide on how to build enterprise-ready apps with NestJS. NestJS is a backend framework used to create scalable and reliable APIs. It is a "battery-included" framework; it includes tools to handle just about every possible use case, from data persistence, to validation, to config management, to testing, and much, much more. This course will help you master Nest . By the time you complete this course, you will have the confidence to build any app you can imagine. Throughout this course you will build a series of apps with growing complexity . We use as few libraries and tools as possible. Instead, you will write many custom systems to better understand how every piece of Nest works together . Each application you build includes discussion on data modeling and persistence. We will first save records in a simple file-based data store (built from scratch) and eventually work our way up to saving data in a production-grade Postgres instance. Testing is a fundamental topic in Nest. A tremendous amount of functionality in Nest is dedicated to making sure your project is easy to test. This course follows Nest's testing recommendations, and you will write both integration and unit tests to ensure your project is working as expected. Although testing can sometimes be confusing and boring, I have put special care into making sure the tests we write are expressive, fast, and effective . You will be able to use this knowledge on your own projects, even those that don't use Nest! Typescript is used throughout this course to make sure we are writing clean and correct code. Don't know Typescript? Not a problem! A free appendix is included at the end of the course to get you up to speed on Typescript. Once you're familiar with it, Typescript will help you catch errors and bugs in your code before you even run it . If you've never used Typescript before you are in for a treat :) -------------------------------------- Everything in this course is designed to make your learning process as easy as possible. At every step, I will teach you what Nest is doing internally , and help you understand how to twist and bend Nest to better suit your application's needs. Every single video in the course has an attached ZIP file containing up-to-date code, just in case you ever get stuck. Full-time teaching assistants are standing by to help answer your questions Access private live chat server is included. Live help whenever you need it! -------------------------------------- Here's a partial list of the topics included in this course: Securely deploy your app to production Write automated integration and unit tests to make sure your code is working Build an authentication system from scratch to log users in Allow users to perform certain actions with a permissions system Store and retrieve data with complex queries using TypeORM Understand how TypeORM handles data relationships Write declarative code using property, method, and parameter decorators Master the concept of dependency injection to write reusable code Implement automatic validation of incoming requests Format outgoing response data with a custom DTO system Handle incoming requests and outgoing responses using Guards and Interceptors Segment your code into reusable Nest Modules Add structure to your database using migrations I had a tough time learning NestJS . There are a tremendous number of outdated tutorials around it, the documentation is sometimes unclear, and Nest itself is just plain hard to understand. I made this course to save you time and money - a course to show you exactly what you need to know about every topic in Nest. You will find learning Nest to be a delightful experience and pick up a tremendous amount of knowledge along the way. Sign up today and join me in mastering NestJS!
- Deploy a feature-complete app to production
- Build authentication and permissions systems from scratch
- Write integration and unit tests to ensure your code is working
- Automatically validate data included with incoming requests
- Use an API client to manually test your app
- Apply structure to your code with Typescript
Temario
UNIDAD 1 - Get Started Here! · 2 leccionesUNIDAD 1 - Get Started Here!
UNIDAD 1 - Get Started Here!
- How to Get Help
- Course Resources
UNIDAD 2 - The Basics of Nest · 6 leccionesUNIDAD 2 - The Basics of Nest
UNIDAD 2 - The Basics of Nest
- Project Setup
- TypeScript Configuration
- Creating a Controller
- Starting Up a Nest App
- File Naming Conventions
- Routing Decorators
UNIDAD 3 - Generating Projects with the Nest CLI · 6 leccionesUNIDAD 3 - Generating Projects with the Nest CLI
UNIDAD 3 - Generating Projects with the Nest CLI
- App Setup
- Using the Nest CLI to Generate Files
- More on Generating Files
- Adding Routing Logic
- [Optional] Postman Setup
- [Optional] VSCode REST Client Extension
UNIDAD 4 - Validating Request Data with Pipes · 6 leccionesUNIDAD 4 - Validating Request Data with Pipes
UNIDAD 4 - Validating Request Data with Pipes
- Accessing Request Data with Decorators
- Installing Extra Required Libraries
- Using Pipes for Validation
- Adding Validation Rules
- Behind the Scenes of Validation
- How Type Info is Preserved
UNIDAD 5 - Nest Architecture: Services and Repositories · 10 leccionesUNIDAD 5 - Nest Architecture: Services and Repositories
UNIDAD 5 - Nest Architecture: Services and Repositories
- Services and Repositories
- Implementing a Repository
- Reading and Writing to a Storage File
- Implementing a Service
- Manual Testing of the Controller
- Reporting Errors with Exceptions
- Understanding Inversion of Control
- Introduction to Dependency Injection
- Refactoring to Use Dependency Injection
- Few More Notes on DI
UNIDAD 6 - Nest Architecture: Organizing Code with Modules · 6 leccionesUNIDAD 6 - Nest Architecture: Organizing Code with Modules
UNIDAD 6 - Nest Architecture: Organizing Code with Modules
- Project Overview
- Generating a Few Files
- Setting Up DI Between Modules
- More on DI Between Modules
- Consuming Multiple Modules
- Modules Wrapup
UNIDAD 7 - Big Project Time! · 4 leccionesUNIDAD 7 - Big Project Time!
UNIDAD 7 - Big Project Time!
- App Overview
- API Design
- Module Design!
- Generating Modules, Controllers, and Services
UNIDAD 8 - Persisting Data with TypeORM · 9 leccionesUNIDAD 8 - Persisting Data with TypeORM
UNIDAD 8 - Persisting Data with TypeORM
- Persistent Data with Nest
- Setting Up a Database Connection
- Creating an Entity and Repository
- Viewing a DB's Contents
- Understanding TypeORM Decorators
- One Quick Note on Repositories
- A Few Extra Routes
- Setting Up Body Validation
- Manual Route Testing
UNIDAD 9 - Creating and Saving User Data · 11 leccionesUNIDAD 9 - Creating and Saving User Data
UNIDAD 9 - Creating and Saving User Data
- Creating and Saving a User
- Quick Breather and Review
- More on Create vs Save
- Required Update for find and findOne Methods
- Querying for Data
- Updating Data
- Removing Users
- Finding and Filtering Records
- Removing Records
- Updating Records
- A Few Notes on Exceptions
UNIDAD 10 - Custom Data Serialization · 8 leccionesUNIDAD 10 - Custom Data Serialization
UNIDAD 10 - Custom Data Serialization
- Excluding Response Properties
- Solution to Serialization
- How to Build Interceptors
- Serialization in the Interceptor
- Customizing the Interceptor's DTO
- Wrapping the Interceptor in a Decorator
- Controller-Wide Serialization
- A Bit of Type Safety Around Serialize
UNIDAD 11 - Authentication From Scratch · 20 leccionesUNIDAD 11 - Authentication From Scratch
UNIDAD 11 - Authentication From Scratch
- Authentication Overview
- Reminder on Service Setup
- Implementing Signup Functionality
- [Optional] Understanding Password Hashing
- Salting and Hashing the Password
- Creating a User
- Handling User Sign In
- Setting up Sessions
- Changing and Fetching Session Data
- Signing in a User
- Getting the Current User
- Signing Out a User
- Two Automation Tools
- Custom Param Decorators
- Why a Decorator and Interceptor
- Communicating from Interceptor to Decorator
- Small Fix for CurrentUserInterceptor
- Connecting an Interceptor to Dependency Injection
- Globally Scoped Interceptors
- Preventing Access with Authentication Guards
UNIDAD 12 - Getting Started with Unit Testing · 21 leccionesUNIDAD 12 - Getting Started with Unit Testing
UNIDAD 12 - Getting Started with Unit Testing
- Testing Overview
- Testing Setup
- Yes, Testing is Confusing
- Getting TypeScript to Help With Mocks
- Quick Note to Help Speed Up Your Tests
- Improving File Layout
- Ensuring Password Gets Hashed
- Refactor 'Email in Use' Test to Address Jest Breaking Changes
- Changing Mock Implementations
- Refactor 'Unused Email' Test to Address Jest Breaking Changes
- Testing the Signin Flow
- Refactor 'Invalid Password' Test to Address Jest Breaking Changes
- Checking Password Comparison
- More Intelligent Mocks
- Refactor 3 Mocks to Address Jest Breaking Changes
- Refactoring to Use Intelligent Mocks
- Unit Testing a Controller
- More Mock Implementations
- Refactor 'User id is not found' Test to Address Jest Breaking Changes
- Not Super Effective Tests
- Testing the Signin Method
UNIDAD 13 - Integration Testing · 8 leccionesUNIDAD 13 - Integration Testing
UNIDAD 13 - Integration Testing
- Required Supertest Import Update
- Getting Started with End to End Testing
- Creating an End to End Test
- App Setup Issues in Spec Files
- Applying a Globally Scoped Pipe
- Applying a Globally Scoped Middleware
- Solving Failures Around Repeat Test Runs
- Creating Separate Test and Dev Databases
UNIDAD 14 - Managing App Configuration · 6 leccionesUNIDAD 14 - Managing App Configuration
UNIDAD 14 - Managing App Configuration
- Understanding Dotenv
- Applying Dotenv for Config
- Specifying the Runtime Environment
- Solving a SQLite Error
- It Works!
- A Followup Test
UNIDAD 15 - Relations with TypeORM · 14 leccionesUNIDAD 15 - Relations with TypeORM
UNIDAD 15 - Relations with TypeORM
- Back to Reports
- Adding Properties to Reports
- A DTO for Report Creation
- Receiving Report Creation Requests
- Saving a Report with the Reports Service
- Testing Report Creation
- Building Associations
- Types of Associations
- The ManyToOne and OneToMany Decorators
- Important Note About Deleting Database - Do Not Skip
- More on Decorators
- Setting up the Association
- Formatting the Report Response
- Transforming Properties with a DTO
UNIDAD 16 - A Basic Permissions System · 13 leccionesUNIDAD 16 - A Basic Permissions System
UNIDAD 16 - A Basic Permissions System
- Adding in Report Approval
- Required Update for changeApproval Method
- Testing Report Approval
- Authorization vs Authentication
- Adding an Authorization Guard
- The Guard Doesn't Work?!
- Middlewares, Guards, and Interceptors
- Assigning CurrentUser with a Middleware
- Required Request Interface Update
- Fixing a Type Definition Error
- Validating Query String Values
- Transforming Query String Data
- How Will We Generate an Estimate
UNIDAD 17 - Query Builders with TypeORM · 3 leccionesUNIDAD 17 - Query Builders with TypeORM
UNIDAD 17 - Query Builders with TypeORM
- Creating a Query Builder
- Writing a Query to Produce the Estimate
- Testing the Estimate Logic
UNIDAD 18 - Production Deployment · 16 leccionesUNIDAD 18 - Production Deployment
UNIDAD 18 - Production Deployment
- The Path to Production
- Providing the Cookie Key
- Understanding the Synchronize Flag
- The Dangers of Synchronize
- The Theory Behind Migrations
- Headaches with Config Management
- TypeORM and Nest Config is Great
- Env-Specific Database Config
- Installing the TypeORM CLI
- Generating and Running Migrations
- Required Migration Update for Production
- Running Migrations During E2E Tests
- Production DB Config
- Heroku CLI Setup Instructions
- Heroku Specific Project Config
- Deploying the App - (Final Lecture)
UNIDAD 19 - [Bonus] Appendix: TypeScript · 75 leccionesUNIDAD 19 - [Bonus] Appendix: TypeScript
UNIDAD 19 - [Bonus] Appendix: TypeScript
- How to Get Help
- TypeScript Overview
- Environment Setup
- Important Update About ts-node and Axios
- A First App
- Executing TypeScript Code
- One Quick Change
- Catching Errors with TypeScript
- Catching More Errors!
- Course Overview
- Types
- More on Types
- Examples of Types
- Where Do We Use Types?
- Type Annotations and Inference
- Annotations with Variables
- Object Literal Annotations
- Annotations Around Functions
- Understanding Inference
- The Any Type
- Fixing the "Any" Type
- Delayed Initialization
- When Inference Doesn't Work
- More Annotations Around Functions
- Inference Around Functions
- Annotations for Anonymous Functions
- Void and Never
- Destructuring with Annotations
- Annotations Around Objects
- Arrays in TypeScript
- Why Typed Arrays?
- Multiple Types in Arrays
- When to Use Typed Arrays
- Tuples in TypeScript
- Tuples in Action
- Why Tuples?
- Interfaces
- Long Type Annotations
- Fixing Annotations with Interfaces
- Syntax Around Interfaces
- Functions In Interfaces
- Code Reuse with Interfaces
- General Plan with Interfaces
- Classes
- Basic Inheritance
- Class Method Modifiers
- Fields in Classes
- Fields with Inheritance
- Where to Use Classes
- App Overview
- Updated Parcel Instructions
- Bundling with Parcel
- Project Structure
- IMPORTANT Info About Faker Installation
- Generating Random Data
- Type Definition Files
- Using Type Definition Files
- Export Statements in TypeScript
- Defining a Company
- Important Note About Google Maps Key
- Adding Google Maps Support
- Required Update for New @types Library
- Google Maps Integration with TypeScript
- Exploring Type Definition Files
- Hiding Functionality
- Why Use Private Modifiers? Here's Why
- Adding Markers
- Duplicate Code
- One Possible Solution
- Restricting Access with Interfaces
- Implicit Type Checks
- Showing Popup Windows
- Updating Interface Definitions
- Optional Implements Clauses
- App Wrapup
UNIDAD 20 - Bonus! · 1 leccionesUNIDAD 20 - Bonus!
UNIDAD 20 - Bonus!
- Bonus!
Tu certificado lo emite la SEP, no solo una plataforma
Al demostrar la competencia recibes un certificado emitido por la Secretaría de Educación Pública a través del Gobierno del Estado de México: un documento oficial que puedes presentar con confianza ante cualquier empleador o institución.
Tu certificado con INEC
- Lo emite la Secretaría de Educación Pública (SEP), a través del Gobierno del Estado de México
- Documento oficial con folio verificable en línea
- Lo otorga la Universidad Tecnológica Fidel Velázquez
Otras plataformas en línea
- Constancia privada emitida por la misma plataforma
- Solo acredita horas cursadas o asistencia
- Sin respaldo de una autoridad educativa
Tu itinerario, de la inscripción al certificado
- 1
Inscripción con pago único
Pagas $2,800 MXN una sola vez y entras de inmediato al curso.
- 2
Estudias a tu ritmo
20 unidades con videos, lecturas y actividades, disponibles 24/7 durante 12 meses.
- 3
Cuestionarios por unidad
Cuestionarios para comprobar lo aprendido.
- 4
Certificado
Emitido por la SEP a través del Gobierno del Estado de México, con folio verificable.
Un certificado oficial de la SEP
- Emitido por la Secretaría de Educación Pública (SEP), a través del Gobierno del Estado de México. No es una constancia privada: es un documento oficial, y ese respaldo marca la diferencia frente a otras plataformas en línea.
- Contenido impartido por Stephen Grider.
- Folio y QR verificables para compartirlo con quien te contrate.
Empieza hoy, a tu ritmo
Un solo pago y acceso inmediato al curso completo durante 12 meses.
- 20 unidades · 245 lecciones · 60 h
- 12 meses de acceso
- Certificado emitido por la SEP (Gob. del Estado de México) con folio verificable
Sobre tu inscripción
¿Cómo es el pago?
Un solo pago de $2,800 MXN. No hay mensualidades ni cargos recurrentes.
¿Cuánto tiempo tengo acceso?
12 meses desde tu inscripción, 24/7, para avanzar a tu ritmo.
¿Quién imparte el contenido?
El curso es impartido por Stephen Grider; INEC gestiona tu inscripción, evaluación y certificado.
¿Qué pasa cuando vence mi acceso?
Puedes renovar tu cuenta tú mismo desde la plataforma, sin trámites ni esperas.


