tRPC – Type-safe API không cần schema cho NextJS full-stack
tRPC cho phép gọi server function từ client với full type safety — không cần viết schema, không cần code generation. Nếu bạn làm full-stack TypeScript với NextJS, tRPC thay thế REST hoàn toàn trong internal API.
1. tRPC hoạt động như thế nào?
Server định nghĩa procedure:
getUser(id: string) → Promise<User>
Client gọi như gọi function ...
NestJS – Config Module & Validation biến môi trường
Quản lý configuration đúng cách là nền tảng của mọi ứng dụng production-ready. NestJS @nestjs/config kết hợp class-validator giúp validate env variables ngay khi khởi động — app sẽ crash ngay nếu thiếu config thay vì lỗi runtime.
1. Cài đặt
npm install @nestjs/config joi
# Hoặc dùng class-validator thay cho joi
npm install @nestjs/config class...
NestJS – Event Emitter & Event-Driven Architecture nội bộ
Event Emitter cho phép các module giao tiếp theo kiểu publish/subscribe mà không cần import trực tiếp nhau — giảm coupling, dễ test, dễ mở rộng. Khác với Redis Pub/Sub hay Kafka, Event Emitter chạy in-process — phù hợp cho monolith.
1. Cài đặt
npm install @nestjs/event-emitter
// app.module.ts
import { EventEmitterModule } from '@nestjs/even...
TypeScript – Advanced Types thực tế trong dự án NodeJS
TypeScript không chỉ là “JavaScript với type annotations” — hệ thống type nâng cao giúp bắt lỗi compile-time, tự document code, và làm refactor an toàn hơn. Bài này tập trung vào các pattern thực tế.
1. Utility Types hay dùng nhất
// Partial — tất cả fields optional
type UpdateUserDto = Partial<User>;
// { name?: string; email?: string; ...
NestJS – GraphQL cơ bản với Code-First approach
GraphQL là query language cho API — client chỉ lấy đúng data cần thiết, tránh over-fetching và under-fetching. NestJS hỗ trợ GraphQL tích hợp sẵn với Apollo Server, theo hai cách: Code-first (TypeScript → Schema) và Schema-first. Bài này dùng Code-first.
1. Cài đặt
npm install @nestjs/graphql @nestjs/apollo @apollo/server graphql
2. Cấu hình...
AI – Function Calling / Tool Use với OpenAI
Function Calling cho phép LLM gọi các hàm/API bên ngoài — thay vì chỉ trả về text, model có thể quyết định khi nào cần tra cứu database, gọi API thời tiết, tính toán, hay gửi email. Đây là nền tảng của AI Agent.
1. Cách hoạt động
User: "Đơn hàng #123 của tôi đang ở đâu?"
→ LLM xác định: Cần gọi hàm get_order_status({ orderId: "123" })
→ App g...
69 post articles, 12 pages.