2.5 KiB
2.5 KiB
Project Guidelines
Code Style
- Dùng TypeScript strict, ưu tiên typing tường minh cho props, API payload và server helpers.
- Tách rõ Server Component và Client Component. Chỉ thêm
"use client"khi cần state/effect/event handler. - Giữ naming theo dự án: route tiếng Việt dạng kebab-case (
dang-nhap,the-loai,tim-kiem,tu-sach), component file dạng kebab-case. - Dùng TailwindCSS utility + component trong
components/ui; không tự ý đổi pattern UI nếu chưa cần.
Architecture
app/: Next.js App Router pages + route handlers.components/: UI/domain components tái sử dụng.lib/: tầng truy cập dữ liệu, auth, context, helper dùng chung.prisma/: schema PostgreSQL; MongoDB model nằm tronglib/models/.- App dùng kiến trúc hybrid DB: PostgreSQL (dữ liệu cấu trúc) + MongoDB (nội dung chương).
- API user-facing thường đi qua proxy routes trong
app/api/**vàREADER_API_ORIGIN.
Build and Test
- Cài đặt:
pnpm install - Dev server:
pnpm dev - Lint:
pnpm lint - Build production:
pnpm build - Chạy production:
pnpm start - Prisma:
npx prisma db push(hoặcnpx prisma migrate dev) vànpx prisma generate - Kiểm tra kết nối DB/AI nếu cần:
node test-db.js,node test-ai.js
Conventions
- Ưu tiên dùng helper sẵn có trong
lib/server-api.tscho gọi backend ở server side. - Luồng auth đi qua NextAuth config trong
lib/auth.ts; không tạo cơ chế xác thực song song trừ khi có yêu cầu rõ ràng. - Khi sửa API route proxy (
app/api/**), luôn giữ nguyên behavior forward headers/token nếu route đang bảo vệ quyền. - Không mở rộng phạm vi thay đổi sang backend Python trong repo khác nếu yêu cầu chỉ thuộc web repo.
Pitfalls
- Thiếu biến môi trường (
DATABASE_URL,MONGODB_URI,NEXTAUTH_SECRET,READER_API_ORIGIN) sẽ gây lỗi khó chẩn đoán. - Nếu Prisma Client chưa generate, import từ
@prisma/clientcó thể fail. - Nếu
reader-apichưa chạy đúng origin, các route/api/*proxy sẽ lỗi upstream. next.config.mjsđang cho phép bỏ qua lỗi type ở build; vẫn cần giữ chất lượng type khi sửa code.
Key References
- Tổng quan setup và môi trường:
README.md - Auth + session callbacks:
lib/auth.ts - App shell và providers:
app/layout.tsx - API helper và error model:
lib/server-api.ts - Proxy mod route pattern:
app/api/mod/[...path]/route.ts - Data model quan hệ:
prisma/schema.prisma