
Start building a CRUD admin portal with NestJS on the back end and React on the front end, using Node.js and VS Code, covering authentication, database management, and server-side apps.
Begin with housekeeping: udemy reviews are skippable; find code samples in the GitHub repo and readme.md, and use Udemy support or Q&A with 24-hour responses; stay curious and enjoy.
Learn NestJS from scratch by building a React-based CRUD app for employees, with authentication and a one-to-many recommendation system, plus an optional React admin tool.
Start a NestJS app using the Nest CLI, install dependencies with npm or yarn, and run in development mode to see Hello world on localhost:3000 via Express.
Explore the scaffolded NestJS project, review package.json and start dev scripts, and learn how end-to-end tests exercise the app, modules, controllers, and services through dependency injection and decorators.
Configure the config module to manage environment variables using the dot env package, defining port 8081. Make the module global and verify localhost:8081 prints hello world.
Learn to set up an auth module in NestJS from scratch using passport, dependency injection, and generated modules and services, with unit tests for authentication.
Learn NestJS local authentication with Passport Local: set up a login endpoint, a guard, and a strategy, and verify it with an end-to-end test.
Implement a jwt authentication layer in NestJS by turning login into a jwt generator and securing the profile route with a passport jwt guard, using env vars for the secret.
Fix unit tests for the NestJS authentication module by wiring in the JWT module and config, and add tests for the profile endpoint using a bearer access token.
Set up react admin on top of a react app to build an api-driven admin interface with authentication and a data provider, using a TypeScript create react app workflow.
Set up the authentication layer for a React Admin interface by creating an HTTP client and an auth provider to obtain and store a JWT token, enabling profile requests.
Set up a sqlite database for a NestJS project with TypeORM, creating a db sqlite file and preparing for entities, migrations, and adapters like MySQL and PostgreSQL.
Create and register a user entity in TypeORM for a NestJS project, defining a sqlite-backed user table with username and password columns, using decorators and a primary generated column.
Learn how to manage user schema changes in NestJS using TypeORM migrations: generate migrations via the CLI, configure a data source, and auto-run migrations on server start with SQLite.
Learn how to use the repository pattern in NestJS to seed the database and fetch users via an injected repository, leveraging lifecycle events like onModuleInit.
Explore TypeORM column types, including created date, updated date, and delete date for soft delete. Implement migrations to update the user entity with boolean, string, date, and number fields.
Learn how to implement a one-to-many relationship between user and recommendations by refactoring a base entity, extending it for new entities, and wiring one-to-many and many-to-one relations with migrations.
Learn to implement a many-to-many relationship between users and perks using TypeORM, with a join table and related entity setup.
Learn to implement a one-to-one relationship in NestJS using TypeORM by creating a profile entity linked to the user, configuring join columns, migrations, and validating with SQLite.
Master NestJS transactions with TypeORM by wrapping multiple queries in a data source transaction, using a manager to perform saves for profile and user atomically and rollback on failure.
Generate and scaffold nestjs CRUD operations for a user resource using the nest cli, creating module, service, and controller with endpoints for create, read, update, and delete, plus dto validation.
Write an end-to-end test for the user get-by-id endpoint in nestjs, using dynamic IDs, add authorization guard checks, and verify 200 success and 401 unauthorized responses.
Write end-to-end tests for creating a user via the post endpoint and fetching all users, asserting 201 creation, 200 retrieval, and a non-empty list with the username.
Learn how to implement input validation in NestJS using class-validator and class-transformer, define a user creation DTO, and use a validation pipe to return 400 errors instead of 500.
Write end-to-end NestJS test to update a user via patch, capture the ID, verify a 200 response and username change, and use a transaction manager to return the updated user.
Learn NestJS from scratch by building an end-to-end test that deletes a user in the user resource, asserting a 200 response and preventing database clutter.
Integrate swagger into the codebase to replace the tenor client, provide endpoint testing and API documentation, generate a document, and expose the UI at /swagger for testing.
Configure swagger tags to categorize NestJS endpoints, create login body and login response DTOs, and document payloads with API body and API response decorators for an access token.
Set up swagger bearer token authentication in a NestJS API by enabling an authorized button and decorating endpoints to require JWT access tokens for protected routes like profile.
Document NestJS entities in Swagger by reusing existing entities in schemas, annotating properties with api property, and enabling bearer auth for endpoints.
Add create and update user DTOs to Swagger with API body decorators, then secure Swagger by gating it behind a production flag for sandbox and staging environments.
Discover how nestjsx crud wires endpoints directly to your TypeORM entities, delivering pagination, sorting, filtering, relational databases and nested relations, optional caching, and swagger docs.
Enhance nestjsx crud to enable server type pagination, eagerly load user profiles via a 1-to-1 relation, and tailor create updates with DTOs while excluding passwords and limiting endpoints.
Wire up NestJS CRUD endpoints with the React Admin data adapter. Secure requests with JWT tokens via the HTTP client and data provider for users.
Create a custom user list and edit flow in an admin portal using React Admin, with a data grid, text/date fields, and row-click to edit.
Wire up create and delete functionality for user endpoints in the admin portal, using a form with a password field, and verify the new user entry in the users table.
Learn how to implement soft delete in nestjs by using a deleted_at column to mark records, preventing display without removing them from the database.
Create a nested route under /user/:userId/recommendation in NestJS by refactoring into a recommendation module with its own controller and service. Expose CRUD operations and preview the route in swagger.
Learn how to test and configure a nested route in NestJS, specifying user id parameters, handling integer and number fields, and ensuring the endpoint works with or without jwt.
Wire up a nested route in the React Admin portal, implement a one-to-many user to recommendations relationship with a data grid, and post descriptions via http client using edit context.
Learn to implement a Winston logger in NestJS with nest-winston, configuring transports for console, file, or database logging. Customize colors, timestamps, and nest-style formatting for clear, route-related logs.
Develop a NestJS logger middleware that logs every incoming request, including URL and method, using the NestJS logger tied to Winston, and apply it to all routes via a consumer.
Enable TypeORM logging and implement a Nest logger to route queries through a single source of truth. Logs become verbose and color-coded, with options to hide sensitive parameters in production.
Advance your NestJS skills by actively building a new project or cloning an existing one, practicing what you learned, and leaving a review to help improve the course.
Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript), and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
Under the hood, Nest makes use of robust HTTP Server frameworks like Express (the default) and optionally can be configured to use Fastify as well!
Nest provides a level of abstraction above these common Node.js frameworks (Express/Fastify), but also exposes their APIs directly to the developer. This gives developers the freedom to use the myriad of third-party modules which are available for the underlying platform.
Philosophy
In recent years, thanks to Node.js, JavaScript has become the “lingua franca” of the web for both front and backend applications. This has given rise to awesome projects like Angular, React, and Vue, which improve developer productivity and enable the creation of fast, testable, and extensible front-end applications. However, while plenty of superb libraries, helpers, and tools exist for Node (and server-side JavaScript), none of them effectively solve the main problem of - Architecture.
Nest provides an out-of-the-box application architecture that allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications. The architecture is heavily inspired by Angular.
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 Typeform for database interaction
Security best practices, password hashing, and storing sensitive information
Persisting data using a database
Writing clean, maintainable code in line with industry standards
Utilizing the NestJS Command Line Interface (CLI)
Using Swagger for testing back-end services
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
Modeling 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
Create admin portal with basic crud operations using React admin framework
Create CRUD endpoints using NestJSX Crud library
What you should know
Having a basic understanding of JavaScript and/or NodeJS
Having a basic knowledge of TypeScript is recommended, but not required
Who is this course if for
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 follow building a practical, real-world application from zero to production
Front-end developers who want to move to the back-end development