Triển khai A-Z (Vercel + Supabase)
Toàn bộ quy trình từ con số 0 đến khi app chạy thật trên Vercel. Cần một tài khoản Supabase (miễn phí) và một tài khoản Vercel.
1. Tạo Supabase project
▼
2. Điền .env.local (2 biến)
▼
3. Tắt Confirm email
▼
4. Chạy migration (bảng + RLS)
▼
5. verify:supabase (kiểm tra)
▼
6. dev (local) → 7. deploy Vercel
- 1Tạo Supabase projectVào supabase.com, tạo project mới. Mở
Project Settings → API, copy Project URL và anon public key. Tuyệt đối không dùngservice_rolekey trong app. - 2Điền .env.local (2 biến)Sao chép
.env.local.examplethành.env.localrồi điền:
Hai biếnNEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi... # tùy chọn - cho "npm run db:reset" (chứa mật khẩu DB, giữ bí mật) SUPABASE_DB_URL=postgresql://postgres.xxxx:MATKHAU@aws-0-region.pooler.supabase.com:5432/postgresNEXT_PUBLIC_*đều công khai an toàn - bí mật của bạn được bảo vệ bởi master password. Email vault không phải biến env - bạn nhập trên màn hình khóa ở lần tạo/mở khóa đầu, app sẽ nhớ và điền sẵn sau đó. - 3Tắt xác nhận emailTrong Supabase:
Authentication → Sign In / Providers → Email, tắt Confirm email. App tạo tài khoản rồi đăng nhập ngay bằng mật khẩu dẫn ra; nếu bật xác nhận thì phiên đầu sẽ bị chặn. - 4Tạo schema + migrationMở
SQL Editor, dán lần lượtsupabase/migrations/0001_init.sql(bảng + RLS) rồi0002_add_database_type.sql(cho loại mục database). Hoặc nếu đã đặtSUPABASE_DB_URL:
(db:reset áp dụng tất cả migration; chỉ dùng khi vault còn trống vì nó xóa sạch dữ liệu cũ.)npm run db:reset - 5Kiểm tra engine (live)Chạy smoke-test đầu cuối với tài khoản nháp (không đụng vault thật); truyền email thật bạn kiểm soát (plus-addressing):
Phải qua đủ 8 PASS: provision, đăng nhập, RLS, mở khóa, recovery key, mã hóa CRUD.npm run verify:supabase ban@gmail.com - 6Chạy local
Mở trình duyệt, nhập email + tạo vault, lưu kỹ 24 từ recovery.npm install npm run dev # http://localhost:3000 - 7Deploy lên Vercel + cài appĐẩy code lên GitHub, vào Vercel Add New → Project rồi import repo. Ở Environment Variables thêm 2 biến
NEXT_PUBLIC_SUPABASE_URL+NEXT_PUBLIC_SUPABASE_ANON_KEY. Sau khi có domain HTTPS, mở app rồi bấm Install (Add to Home Screen) để cài như PWA.
Đừng commit .env.local
File
.env.local chứa key và đã được gitignore. Chỉ commit .env.local.example. Đặt biến môi trường thật trực tiếp trên Vercel.