NestJS is a progressive Node.js framework for building efficient, reliable, and scalable server-side applications using TypeScript and JavaScript.

Learning NestJS can significantly enhance your ability to create structured, maintainable, and testable backend applications, offering a robust toolkit that integrates seamlessly with other modern technologies and methodologies.

We just posted a comprehensive NestJS course on the freeCodeCamp.org YouTube channel. This course, crated by the experienced Haider Malik, will help you master the creation of robust backend APIs for real-world applications.

In this course, Haider Malik, a seasoned web developer and open-source advocate, will guide you through the process of developing Spotify clone backend. Starting from database design to REST API development and deployment, this course is structured to provide a deep understanding of backend architecture using a blend of NestJS, Node.js, PostgreSQL, and MongoDB.

The course contains multiple modules, each designed to tackle different aspects of backend development with NestJS. From understanding the basics of NestJS, creating REST APIs, handling middlewares and exception filters, to implementing authentication and authorization, the course is a deep dive into backend development.

Further modules cover advanced topics like connecting with databases using TypeORM, implementing relationships in databases, and securing APIs with JWT authentication. Learners will also get hands-on experience with migrations, seeding, debugging, and even deploying NestJS applications to cloud services.

The course does not stop at REST APIs; it also introduces GraphQL, showcasing how to build and authenticate GraphQL APIs. Advanced concepts like WebSocket integration, file handling, custom decorators, and even real-time subscriptions with GraphQL are covered, ensuring learners are well-versed in the latest backend development practices.

Here is the full course outline.

Module 0

  • What is Nestjs
  • Create NestJs Project
  • Nestjs Directory Structure

Module 1

  • Creating Controller
  • Creating a Service
  • Creating Module

Module 2

  • Middleware
  • Exception Filter
  • Transform param using ParseIntPipe
  • Validate Request Body using class validator

Module 3

  • Custom Providers
  • Injection Scopes
  • One To Many Relation

Module 4

  • Establish Database Connection
  • Create an Entity
  • Create and Fetch records from Database
  • Pagination

Module 5

  • One to One
  • Many to Many relation

Module 6

  • User Signup
  • User Login
  • Authenticate User with Passport JWT
  • Role Based Authentication
  • Two Factor Authentication
  • API Key Authentication

Module 7

  • Debug Nestjs Application
  • Migrations
  • Seeding

Module 8

  • Custom Configuration
  • Validate Env Variables
  • Hot Module Reloading

Module 9

  • Swagger Setup
  • Document Signup Route
  • Create Schema using ApiProperty
  • Test JWT Authentication

Module 10

  • Install MongoDB using Docker Compose
  • Connect with MongoDB
  • Create Schema
  • Save Record in Mongo Collection
  • Find and Delete
  • Populate

Module 11

  • Configure Dev and Production Env
  • Push Source Code to Github Repo
  • Deploy Nestjs Project to Railway
  • Install Dotenv to work with TypeORM migrations
  • Fixing Env Bugs

Module 12

  • Getting started with Jest
  • Auto Mocking
  • SpyOn Function
  • Unit Test Controller
  • Unit Test Service
  • E2E Testing

Module 13

  • Speedy Web Compiler with Nestjs v10
  • Creating Websocket Server
  • Send Message from Frontend app

Module 14

  • GraphQL Server Setup
  • Define Queries and Mutations
  • Resolve Queries
  • Resolve Mutations
  • Error Handling

Module 15

  • Define Schema for Authentication
  • Resolve Auth Queries and Mutations
  • Apply Authentication using Auth Guard

Module 16

  • Implement Real time Subscription

Module 17

  • Unit Test Resolver
  • End to End Testing GraphQL APIs

Module 18

  • Server Side Caching using Apollo
  • Optimize Query Performance using Data Loader
  • Fetching Data from External REST API

Module 19

  • Setup Prisma
  • Models and Migrations
  • Generate Prisma Client
  • Create, Find and FindOne
  • Update and Delete Operation.mov
  • One to Many Relation
  • One to One Relation
  • Many to Many Relation
  • Bulk or Batch Operations
  • Implement Transaction using Nested Queries
  • Interactive Transactions

Module 20

  • File Upload
  • Custom Decorator
  • Scheduling CRON Task with Nest.js
  • Cookies
  • Queues
  • Event Emitter
  • Streaming
  • Session

Each lesson is designed to be highly practical, ensuring that learners not only understand the theoretical aspects but also get to implement what they've learned in real-world scenarios. This hands-on approach, combined with Haider's expert guidance, ensures that by the end of the course, participants will be confident in building and deploying robust backend systems.

Watch the full course on the freeCodeCamp.org YouTube channel (14-hour watch).