Skip to main content

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 tabel user_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 bucket avatars 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

Tabel webhook_events dipakai untuk:
  • mencegah duplicate processing,
  • menyimpan payload event,
  • mencatat status processed atau failed,
  • membantu debugging dari admin dashboard.

Audit log

Tabel audit_logs menangkap event seperti:
  • perubahan profil,
  • aksi admin,
  • status payment sukses atau gagal,
  • perubahan subscription.
Ini penting untuk operasi harian dan investigasi masalah.

Persistent rate limit

Jika SUPABASE_SERVICE_ROLE_KEY tersedia, KilatKoding akan memakai Supabase untuk rate limit persisten pada:
  • contact form,
  • waitlist,
  • payment creation,
  • AI routes.
Kalau env itu tidak ada, repo fallback ke in-memory rate limit. Cocok untuk local development, tetapi tidak ideal untuk production multi-instance.

Cara apply migrasi

Kalau kamu tidak memakai Supabase CLI, kamu bisa menyalin file SQL ke SQL editor Supabase secara berurutan.

Cara generate ulang type database

Lakukan ini setelah migrasi live kamu benar-benar sudah sesuai.
Kalau billing, admin, avatar, atau webhook terasa tidak konsisten, cek dulu apakah semua migrasi sudah benar-benar terpasang di project Supabase kamu.
Kalau kamu ingin gambaran relasi tabel yang lebih cepat dibaca daripada daftar migrasi, buka Peta database.