Daily Devlog - Ngày 1 [Setup Project + Error Handling]
Hôm nay tôi hoàn thành phase 1 của SocialHub — Và tôi đã làm được gì:
1. Setup project Nodejs + Typescipt:
- TypeScript strict mode → không cho phép code “mập mờ”
- ESLint + Prettier → giữ code sạch, đồng nhất
- tsx watch → dev nhanh, không phải build thủ công
2. Cấu trúc thư mục MVCS theo feauture:
- src/ chia thành config/, modules/, middlewares/, utils/, routes/
- Mỗi module có 3 lớp tách biệt:
- route → nhận request
- controller → xử lý HTTP layer
- service → chứa business logic
3. Hệ thống Error Handling:
- AppError class để throw lỗi nghiệp vụ kèm statusCode, code, isOperational.
- sendSuccess / sendError chuẩn hóa shape JSON cho mọi response.
- errorHandler middleware gom mọi lỗi về một chỗ, phân loại operational vs bug, giấu stack trace ở production.
- NotFoundHandler bắt route không tồn tại
4. Một bài học nhỏ: Throw với Return
- Ở notFoundHandler, tôi từng viết:
```typescript
return new AppError(...)
```
Và tự hỏi vì sao Express không bắt được lỗi.
Câu trả lời: vì tôi chưa throw nó.
```typescript
throw new AppError(...)
```
Một chi tiết nhỏ, nhưng là khác biệt giữa hiểu và không hiểu cách runtime hoạt động.
Ngày mai bắt đầu phase 2 với Prisma và MongoDB. Hẹn gặp ở Ngày 2.
All Rights Reserved