Files
reader/.github/copilot-instructions.md
T

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 trong lib/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/**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ặc npx 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.ts cho 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/client có thể fail.
  • Nếu reader-api chư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