Dự án sử dụng bộ công nghệ hiện đại nhất (God Stack 2025) để xây dựng ứng dụng Fullstack với tốc độ phát triển cực nhanh, bảo mật và hiệu năng cao.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Auth: Better Auth (Google Login + Admin Plugin)
- Database ORM: Drizzle ORM
- Database Engine: LibSQL / SQLite
- Styling: Tailwind CSS v4
- Optimization: React Compiler
- Code Quality: Prettier (Space 2) & ESLint
git clone <your-repo-url>
cd hoctuthien
npm installTạo file .env từ file .env.example và điền các thông số:
DATABASE_URL="file:local.db"
BETTER_AUTH_SECRET="your_secret_here"
BETTER_AUTH_URL="http://localhost:3000"
GOOGLE_CLIENT_ID="xxx.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="GOCSPX-xxx"Đây là bước quan trọng nhất để đồng bộ Schema:
# 1. Tạo Schema cho Better Auth
npm run auth:gen
# 2. Đẩy cấu hình Schema vào file database local.db
npm run db:push
# 3. Tạo dữ liệu mẫu (Admin test)
npm run db:seed| Lệnh | Mô tả |
|---|---|
npm run dev |
Chạy ứng dụng ở chế độ Development |
npm run auth:gen |
Cập nhật schema Auth khi thay đổi config trong auth.ts |
npm run db:push |
Đồng bộ Schema Drizzle trực tiếp vào Database |
npm run db:studio |
Mở giao diện Web để xem/sửa dữ liệu Database |
npm run db:seed |
Chèn dữ liệu mẫu vào Database |
npm run format |
Tự động định dạng toàn bộ code về Space 2 |
npm run lint |
Kiểm tra lỗi logic bằng ESLint |
src/app: Routes, Pages và Server Components.src/components: Các UI components dùng chung.src/db: Toàn bộ cấu hình Database.schema/: Chứa các định nghĩa bảng (Auth, Business).index.ts: Kết nối Drizzle với LibSQL.
src/lib: Cấu hình các thư viện bên thứ 3 (Auth client/server, utils).src/actions: Chứa các Server Actions xử lý logic nghiệp vụ.
Mỗi khi bạn muốn thêm một bảng mới hoặc thêm tính năng cho Better Auth (ví dụ: bật plugin mới):
- Cập nhật cấu hình trong
src/lib/auth.ts. - Chạy
npm run auth:genđể cập nhật file code schema. - Chạy
npm run db:pushđể cập nhật bảng thực tế trong Database.
- Indentation: 2 spaces (đã cấu hình qua Prettier).
- Naming:
- Biến/Hàm:
camelCase. - Components:
PascalCase. - Database Columns:
snake_case(trong DB) vàcamelCase(trong code).
- Biến/Hàm:
- Tailwind: Sử dụng hàm
cn()từsrc/lib/utils.tsđể gộp class.
- Database local (
*.db) và file.envđã được chặn trong.gitignore. - Tuyệt đối không commit các thông tin nhạy cảm lên Repository.
- Sử dụng
src/middleware.tsđể bảo vệ các route/dashboardvà/admin.
Dự án được phát triển cho mục đích [Học Từ Thiện]. Vui lòng không sao chép khi chưa được phép.
Happy Coding! 🚀
Bạn có thể mở README.md này trong VS Code và nhấn Ctrl + Shift + V để xem bản xem trước (Preview) cực đẹp trước khi commit lên GitHub nhé!