Ringkasan
KilatKoding menyimpan state utamanya di Supabase PostgreSQL. Selain tabel user-facing seperti profile, subscription, dan payments, repo ini juga sudah menyiapkan tabel operasional seperti webhook events, audit logs, dan persistent rate limits.Migrasi yang tersedia
Tabel yang paling penting
Source of truth access control
Source of truth akses admin adalah tabeluser_roles, bukan ADMIN_EMAILS.
ADMIN_EMAILS hanya dipakai sebagai bootstrap awal agar email tertentu otomatis di-upsert menjadi admin saat login pertama.
Avatar storage
Repo ini memakai bucketavatars di Supabase Storage.
Aturan penting
- ukuran maksimal avatar: 2 MB
- format yang diterima:
image/jpeg,image/png,image/webp,image/gif - object path:
${userId}/avatar - signed URL avatar berlaku terbatas dan dibuat saat dibutuhkan
Webhook ledger
Tabelwebhook_events dipakai untuk:
- mencegah duplicate processing,
- menyimpan payload event,
- mencatat status
processedataufailed, - membantu debugging dari admin dashboard.
Audit log
Tabelaudit_logs menangkap event seperti:
- perubahan profil,
- aksi admin,
- status payment sukses atau gagal,
- perubahan subscription.
Persistent rate limit
JikaSUPABASE_SERVICE_ROLE_KEY tersedia, KilatKoding akan memakai Supabase untuk rate limit persisten pada:
- contact form,
- waitlist,
- payment creation,
- AI routes.
Cara apply migrasi
Cara generate ulang type database
Kalau kamu ingin gambaran relasi tabel yang lebih cepat dibaca daripada daftar migrasi, buka Peta database.