Panduan ini fokus ke deploy stack aktif saat ini: Next.js App Router + Supabase.
- Akun Supabase
- Akun Vercel
- API key 9Router
- Node.js 20+
Salin .env.example menjadi .env.local untuk lokal:
Copy-Item .env.example .env.localIsi nilainya:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_DOCUMENTS_BUCKET=documents
NINEROUTER_BASE_URL=https://api.9router.com/v1
NINEROUTER_API_KEY=
APP_ENV=production
MAX_UPLOAD_BYTES=20971520
CACHE_TTL_DAYS=30
REQUIRE_AUTH=1- Buka Supabase Dashboard → SQL Editor.
- Jalankan isi file:
supabase/migrations/0001_initial.sql.
- Supabase Dashboard → Storage.
- Buat bucket bernama
documents. - Set bucket sebagai private.
- Supabase Dashboard → Authentication → Users → Add user.
- Isi email dan password.
- Ambil
user iddari user tersebut. - Tambahkan row ke tabel
profiles:id= user id dari Authemail= email username= nama tampilanrole=adminataustaff
npm install
npm run typecheck
npm run build
npm run self-checkSemua command di atas harus lulus.
- Push repository ke Git provider (GitHub/GitLab/Bitbucket).
- Import repo ke Vercel sebagai project baru.
- Framework: Next.js (auto-detect).
- Tambahkan semua env dari langkah 2 di Vercel (Production environment).
- Deploy.
Ganti YOUR_APP_URL dengan domain production Anda.
-
Health check:
GET https://YOUR_APP_URL/api/health -
Login melalui UI menggunakan user yang ada di Supabase Auth +
profiles. -
Upload 1 dokumen valid (JPG/PNG/WEBP/PDF, ukuran <
MAX_UPLOAD_BYTES). -
Pastikan hasil OCR muncul.
-
Edit 1 field lalu simpan verifikasi.
-
Cek data masuk ke tabel Supabase:
ai_logsai_resultsai_cache
-
APP_ENV=production -
REQUIRE_AUTH=1 - Bucket
documentsprivate - Semua env terisi di Vercel
-
npm run buildlulus -
GET /api/healthtidak error - Login berhasil
- Upload + ekstraksi berhasil
- Simpan verifikasi berhasil
- Data tercatat di Supabase
- Login sukses tapi API 401/403: cek row
profilesuser. - Gagal upload ke storage: cek bucket
documentsdan policy bucket. - API 500: cek env
SUPABASE_SERVICE_ROLE_KEYdanNINEROUTER_API_KEYdi Vercel. - OCR error: cek key/quota 9Router dan
NINEROUTER_BASE_URL. - Build gagal: jalankan ulang
npm run typecheckdannpm run builddi lokal.