Mình sẽ hướng dẫn các bạn A-Z về framework Nest.js thông qua dự án API website thương mại điện tử. Ngoài những chức năng cơ bản ai cũng biết, thì các bạn sẽ được học về tích hợp cổng thanh toán, xác thực 2FA, Monorepo, Caching, Permission Based Access Control, Rate Limit, Swagger, xử lý nhiều request cùng đặt hàng,... Mình đã bỏ ra hơn 9 triệu để mua khóa Nest.js của creator Nest.js nên tin mình đi, đây là khóa ngon nhất mà bạn tìm thấy trên internet với mức giá hợp lý nhất.
Nest.js Super | Dự án Ecommerce API tích hợp thanh toán online
Mình sẽ hướng dẫn các bạn A-Z về framework Nest.js thông qua dự án API website thương mại điện tử. Ngoài những chức năng cơ bản ai cũng biết

Mô tả
Bạn sẽ học được gì?
Kỹ năng phân tích và thiết kế Database
Nắm vững Postgresql và Prisma
Biết quy trình thanh toán online và xác thực đơn hàng
Nắm vững Monorepo
Xử lý caching với Redis
Xử lý nhiều request cùng đặt hàng vào 1 thời điểm
Yêu cầu
Nội dung khóa học
16 chương
Hướng dẫn
JavaScript Class
Chạy code TypeScript trên Bun, Deno và Node.js
TypeScript Class
Higher Order Function và Depedency Injection
TypeScript Decorator
Giới thiệu Nest Framework
Khám phá bên trong một Nest Application
Làm quen GET POST PUT DELETE
Chỉnh sửa Prettier và Postman để code thuận tiện hơn
Phân tích cơ sỡ dữ liệu dự án CRUD và tạo schema bằng DBML
Khởi tạo database sqlite với prisma
Tích hợp Prisma Service vào Shared Module
Các câu lệnh Prisma CLI hay dùng
Validate file .env
Hashing service và register
Validation với DTO
Serialization - Chuẩn hóa dữ liệu trả về
Nest Interceptor
JWT và Login
Refresh Token
Custom match decorator
Type Predicate
Tự động lưu postman environment với post script
Bảo vệ route với Guard
Bảo vệ route với api-key
Authentication Guard nâng cao với điều kiện
Chức năng logout
Active User Decorator
Hoàn thiện Get Posts
Hoàn thiện Create Update Delete Post
Giới thiệu dự án
Cấu trúc một table hỗ trợ đa ngôn ngữ
Cấu trúc một table Product Variant
Phân tích sơ bộ các đối tượng cần tạo table
Mô tả CSDL bằng DBML
Những lưu ý về Postgresql trước khi cài đặt
Lưu ý về Prisma model
Tạo Prisma Model
Tránh bị một số lỗi TypeScript
Tạo Shared Module
Script tạo seed data
Cache clientRoleId khi đăng ký user
Tích hợp Zod Validation và Serialization
Hạn chế try-catch với CatchEverythingFilter
Áp dụng Repository Pattern
Phân tích flow OTP Code và khai báo end point
Code Logic Tạo OTP khi đăng ký
Cập nhật xác thực OTP cho chức năng đăng ký
Gửi OTP đến email bằng Resend
Xác thực domain trên Resend
Gửi email bằng template html
Giới thiệu về React Email
Sử dụng React Email làm Email Template
Tư duy về thiết kế Authentication & Authorization cho website
Thêm model Device và Hướng dẫn migrate
Logic cơ bản chức năng Login [Login Part 1]
Cách lấy IP và UserAgent của client [Login Part 2]
Một số cập nhật nhỏ
Refresh Token
Logout
Return message cho Send OTP và Tạo decorator @IsPublic
Bài tập Oauth 2.0 với Google
Tạo dự án trên trên Google Console Cloud
Tạo Google Authorized Url bằng googleapis
Source FrontEnd Vite React để test chức năng login với Google
Tạo Route Google Callback hoàn thiện chức năng Google Login
Publish Production Google Cloud Console
Refactor Error và vấn đề đa ngôn ngữ
Fix bug truyền sai roleName khi tạo token
Chức năng quên mật khẩu
Phân tích chức năng 2FA
Cập nhật Schema Model DTO cho chức năng 2FA
Tạo mã 2FA
Cập nhật xác thực 2 lớp cho login
Chức năng tắt mã 2FA
Tối ưu Language Schema và index deletedAt
Bài tập CRUD Language
Hướng dẫn làm Language
Vấn đề của prisma db push
Chuyển đổi prisma db push sang prisma migrate
Thêm chức năng Partial Unique Index bằng prisma migrate
Custom Migration
Fix lỗi "The migration was modified after it was applied" và add thêm deletedById vào schema.prisma
Bài tập CRUD Permission
Hướng dẫn làm CRUD Permission
Tạo script Create Permissions hàng loạt
Tạo script xóa hoặc tạo permission dựa trên các endpoint hiện có
Hướng dẫn down migration và bài tập CRUD Roles
Hướng dẫn queryRaw và CRUD Roles
Cập nhật Zod schema cho Permission Role và giải thích vì sao query không dùng index
Fix bug Permission đã bị xóa mềm nhưng vẫn còn trong Role
Cập nhật script add permissions vào Admin Role
Kiểm tra Role Permission khi request
Refactor Authentication Guard
Ngăn chặn user thao tác trên base role
Thêm cột module vào Permission để gom nhóm
Fix bug: khi Role bị vô hiệu hóa thì nên từ chối request & Không cho phép user chỉnh sửa base role
Bài tập Profile
Hướng dẫn làm Profile
Fix bug error message bên api role và refactor lại một số file bên auth
Refactor RolesService trong auth
Bài tập CRUD User
Hướng dẫn CRUD User
Migrate unique email và totpSecret
Fix lỗi Prisma liên quan đến unique Email
Upload single file
File validation
Upload Array of Files và Serve static
Hướng dẫn tạo và kết nối với AWS S3
Upload file lên S3
Fix bug upload file nhưng không xóa file
Upload File với Presigned Url
Dùng React upload file với presigned url
Validate file khi dùng presign url
Hướng dẫn dùng S3 Storage của VN Data
CRUD Brand và Brand Translation
Đa ngôn ngữ với Nestjs i18n
CRUD Category và Category Translation
Migrate Product
Tạo thuật toán generate SKU
Tạo model liên quan product
Khai báo type cho JSON trong Prisma
Khai báo method findById và delete trong ProductRepo
Tạo method create trong ProductRepo
Tạo method update trong ProductRepo
Test CRUD API Product và cập nhật schema validate
Cập nhật create-permissions tự động thêm permissions cho seller
[P1] Refactor Product - Cập nhật product repo
[P2] Refactor Product - Tách product ra product và manage product
Test API Product và fix bug isPublic
Filter Product
orderBy và sortBy Product
Migrate CartItem và khai báo cart zod schema
Tạo Repo Service Controller cho Cart
Gom nhóm cartItem theo shop
🛑 Cập nhật createdById của SKU
Sử dụng các function của Postgresql để gom nhóm cartItem
Migrate Order và ProductSKUSnapshot
Fix bug thêm cùng sản phẩm vào cart và sắp xếp cartItem
Tạo model dto error Order
Tạo list order
Tạo Order
Detail và Cancel Order
Validate cộng dồn quantity cartItem vượt quá stock khi add cart
Giới thiệu flow và khai báo Model Payment
Tạo Webhook API Payment Receiver
Bảo vệ webhook bằng API Key
Setup Redis và BullMQ để làm Queue
Tạo Producer và Consumer cho Queue
Tự động tính năng tự động cancel payment sau 24h không thanh toán
Xóa job cancel payment khi thanh toán thành công
Rollback update khi queue bị lỗi
Đăng ký Sepay và liên kết bank
Cài đặt Webhook Sepay
Implement Websocket vào dự án
Namespace trong Websocket
Custom Websocket Adapter
Lifecyle và middleware Websocket
Lưu Socket Id vào database
Emit sự kiện về cho client khi thanh toán thành công
Emit đến nhiều client bằng Room
Sử dụng Redis Adapter cho multiple server
Swagger
Rate Limit