📄️ Kiến trúc & các tầng (Layers)
Quy ước cấu trúc thư mục và trách nhiệm từng tầng trong ứng dụng Next.js App Router. Luồng dữ liệu và gọi hàm một chiều: UI → Actions → Services → Prisma/DB.
📄️ Prisma
Convention sử dụng Prisma trong Next.js: client singleton, schema, migrations, transaction và soft delete. Toàn bộ truy vấn DB thực hiện trong Service layer, không gọi Prisma trực tiếp từ Actions.
📄️ Strapi Schema & đồng bộ type
Khi dự án dùng Strapi (CMS) kết hợp Prisma, cần đồng bộ schema và kiểu TypeScript. Convention dưới đây bổ sung cho Prisma (client, transaction, soft delete).
📄️ Server Actions
Quy tắc định nghĩa và sử dụng Server Actions trong Next.js App Router. Actions thuộc tầng entry point (xem Kiến trúc & các tầng): nhận input, gọi Services, trả kết quả — không gọi Prisma trực tiếp.
📄️ Authorization & Security
Phân quyền truy cập và bảo đảm mọi màn hình/action được bảo vệ đúng. Kiểm tra quyền cả ở UI (ẩn nút) và backend (Action/API từ chối khi không đủ quyền).
📄️ Data Fetching
Quy ước lấy dữ liệu từ API/backend trong ứng dụng Next.js. Hooks thuộc tầng client: gọi API hoặc Server Action, không gọi Prisma/Services trực tiếp (xem Kiến trúc & các tầng).
📄️ Frontend Testable UI Standards
1. Core Principle