Website toko Minecraft Next.js + Supabase + KiPay QRIS.
- Tampilan merah-putih Indonesia + Halloween, logo bulat ZM, banner Grand Opening.
- Opening screen, animasi loading, Sign In / Sign Up, verifikasi email, dan nomor HP pelanggan.
- Produk, kategori, pencarian, kode promo, checkout QRIS KiPay.
- Cek pesanan pelanggan (hanya pesanan akun sendiri).
- Dashboard admin khusus
jellyharman6@gmail.com: tambah/edit/hapus produk, upload gambar produk, ganti banner, buat promo, dan lihat semua pesanan. - API key KiPay hanya dipakai di server; tidak dikirim ke browser.
- Buka https://supabase.com lalu buat project baru.
- Masuk SQL Editor → New query.
- Buka file
supabase/schema.sql, copy seluruh isinya, paste ke SQL Editor, lalu klik Run. - Buka Authentication → Providers → Email dan aktifkan email confirmation.
- Buka Authentication → URL Configuration. Isi Site URL dengan domain Vercel kamu. Tambahkan Redirect URLs:
https://DOMAIN-VERCEL-KAMU/**danhttp://localhost:3000/**. - Untuk email verifikasi otomatis yang stabil, atur SMTP di Authentication → SMTP Settings.
- Dari Project Settings → API, salin Project URL, anon/public key, dan service_role key.
- Duplikat
.env.example, ubah nama salinannya menjadi.env.local. - Isi variabel berikut dengan data project kamu:
NEXT_PUBLIC_SUPABASE_URL=https://PROJECT.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEY=SUPABASE_SERVICE_ROLE_KEY
KIPAY_API_KEY=API_KEY_KIPAY
KIPAY_WEBHOOK_SECRET=WEBHOOK_SECRET_KIPAY
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_ADMIN_WHATSAPP=628xxxxxxxxxx
NEXT_PUBLIC_ADMIN_DISCORD=https://discord.gg/INVITE_KAMU
ADMIN_EMAIL=jellyharman6@gmail.comJangan pernah mengunggah .env.local ke GitHub. Jangan beri awalan NEXT_PUBLIC_ pada API key KiPay atau Supabase service role key.
Buka terminal di folder yang berisi package.json dan folder app, lalu jalankan:
npm install
npm run devBuka http://localhost:3000.
- Upload/push isi folder project ini ke repository GitHub. Pastikan
package.json,app,lib, dansupabaseberada pada folder project yang sama. - Vercel → Add New → Project → Import repository GitHub.
- Root Directory harus menunjuk ke folder yang langsung berisi
package.jsondanapp. Jika struktur GitHub sepertiZellMarketMC/package.jsondanZellMarketMC/app, pilihZellMarketMC. Jikapackage.jsondanappsudah berada di root repository, pilih./. Jangan pilih folderapp. - Tambahkan semua environment variables di atas di Settings → Environment Variables. Untuk production, ganti
NEXT_PUBLIC_SITE_URLdengan URL Vercel final, misalnyahttps://zellmarketmc.vercel.app. - Klik Deploy. Setelah mengubah environment variables, lakukan redeploy.
- Buka website.
- Pilih Sign Up dan daftar menggunakan email
jellyharman6@gmail.com. - Buka email tersebut dan klik link verifikasi dari Supabase.
- Login menggunakan akun itu. Tombol Admin akan muncul otomatis.
- Akun dengan email lain tidak mendapat akses admin. Hak akses juga dibatasi oleh Row Level Security di Supabase, bukan hanya disembunyikan dari tampilan.
- Di KiPay, buat project dan ambil API key serta webhook secret dari project tersebut.
- Masukkan ke
KIPAY_API_KEYdanKIPAY_WEBHOOK_SECRETpada.env.localdan Vercel Environment Variables. - Atur webhook URL di dashboard KiPay menjadi:
https://DOMAIN-VERCEL-KAMU/api/payments/webhook. - Uji dahulu menggunakan API key sandbox. Setelah alur create QR → scan/test → webhook paid berhasil, baru ganti ke project production.
Integrasi memakai endpoint transaksi KiPay: POST /api/pay/{apiKey}/transactions, endpoint QR PNG, endpoint baca status transaksi, serta signature webhook HMAC-SHA256. Backend memeriksa ulang status transaksi ke KiPay sebelum menandai pesanan lunas.
- Link Discord: ubah
NEXT_PUBLIC_ADMIN_DISCORDdi Vercel. - Nomor WhatsApp admin: isi
NEXT_PUBLIC_ADMIN_WHATSAPPdengan format internasional tanpa+, contoh6281234567890. - Setelah mengubah nilai di Vercel, lakukan Redeploy.
- Nomor WhatsApp admin belum diisi karena kamu belum memberikan nomornya.
- Email verifikasi dikirim oleh Supabase Auth; nama pengirim dan template email dapat diatur di Supabase Auth Email Templates/SMTP.
- Produk digital belum dikirim otomatis setelah pembayaran. Admin perlu memproses order dan menghubungi pembeli lewat WhatsApp/Discord.
- Jangan gunakan pembayaran production sebelum tes sandbox selesai.
- Untuk keamanan, simpan API key, service role key, dan webhook secret hanya di Environment Variables server.