Home

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 ...

Read more

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...

Read more

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...

Read more

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; ...

Read more

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...

Read more

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...

Read more