Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://belajarkoding.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Halaman ini menjelaskan bagaimana satu aksi user bergerak melewati halaman, route API, service pihak ketiga, dan tabel database. Cocok untuk developer, operator, dan pembaca non-tech yang ingin paham gambaran prosesnya.

Peta flow utama

FlowDimulai dariMenyentuh apa saja
Auth dan onboarding dasarhalaman authSupabase Auth, auth.users, profiles, subscriptions, user_roles
Checkout dan aktivasi subscriptiondashboard billingPOST /api/payments, provider payment, webhook, payments, subscriptions, webhook_events, audit_logs
Edit profil dan avatardashboard settingsPOST /api/profile/avatar, Supabase Storage, POST /api/profile, profiles, audit_logs
Waitlist dan contacthalaman publikPOST /api/waitlist atau POST /api/contact, Supabase atau Resend, rate limit
AI requestUI AI produkPOST /api/ai/chat atau POST /api/ai/generate, provider AI, ai_usage, rate limit

Flow auth dan onboarding dasar

1

User daftar atau login

User masuk lewat halaman auth seperti /auth/login atau /auth/sign-up.
2

Supabase membuat atau memverifikasi session

Session disimpan dalam alur auth Supabase. Callback seperti OTP dan OAuth masuk ke /auth/confirm.
3

Trigger database membuat data dasar user

Saat user baru dibuat di auth.users, migration juga menyiapkan record default di profiles, subscriptions, dan user_roles.
4

Area login-aware membaca klaim session

Dashboard, billing, settings, dan admin membaca klaim auth untuk menentukan akses.
Kalau flow ini gagal, titik cek pertama biasanya:
  • Supabase public env,
  • redirect URL,
  • callback /auth/confirm,
  • kebijakan access control admin di user_roles.

Flow checkout sampai subscription aktif

1

User memilih plan di dashboard billing

UI membaca katalog plan dari config/subscriptions.ts.
2

Client memanggil POST /api/payments

Route memvalidasi body request, memastikan user login, lalu membuat record payments dengan status PENDING.
3

Server membuat sesi checkout provider

Midtrans mengembalikan Snap token. Doku mengembalikan checkout URL.
4

User menyelesaikan pembayaran di provider

Setelah itu user biasanya kembali ke /order/[id] atau fallback /payment/callback.
5

Provider memanggil webhook

Webhook Midtrans atau Doku memverifikasi signature, mencatat event ke webhook_events, lalu memperbarui status payment.
6

Subscription diaktifkan

Kalau payment menjadi PAID, route webhook mengaktifkan atau memperbarui subscriptions. Audit log juga ikut dicatat.
Tabel yang terlibat:
  • payments
  • subscriptions
  • webhook_events
  • audit_logs

Flow edit profil dan avatar

1

User membuka dashboard settings

Halaman settings membaca profile, role, dan avatar yang ada.
2

Client meminta signed upload URL

POST /api/profile/avatar menerima fileSize dan fileType, lalu mengembalikan token upload kalau valid.
3

Browser upload file ke bucket avatars

File disimpan ke path ${userId}/avatar di Supabase Storage.
4

Client menyimpan referensi avatar ke profile

POST /api/profile memperbarui full_name, avatar_path, dan avatar_url.
5

Avatar lama dibersihkan

Kalau user mengganti avatar, object lama akan dicoba untuk dibersihkan. Audit log juga dibuat.
Penyebab gagal yang paling umum:
  • auth belum aktif,
  • SUPABASE_SERVICE_ROLE_KEY belum siap untuk write tertentu,
  • file terlalu besar,
  • MIME type tidak didukung.

Flow waitlist dan contact

Alurnya:
  • user submit email di /waitlist,
  • POST /api/waitlist melewati rate limit berbasis IP,
  • payload divalidasi,
  • data masuk ke tabel waitlist,
  • duplikat email mengembalikan error yang bisa ditangani UI.
Alurnya:
  • user submit nama, email, dan pesan di /contact,
  • POST /api/contact melewati rate limit berbasis IP,
  • payload divalidasi,
  • server mengirim email lewat Resend,
  • inbox tujuan diambil dari CONTACT_EMAIL atau fallback EMAIL_FROM.

Flow AI request

1

Client memanggil route AI

UI produk memanggil POST /api/ai/chat atau POST /api/ai/generate.
2

Server melakukan authorization

Route memeriksa provider, auth user, subscription plan, dan monthly usage limit.
3

Rate limit dihitung

Limit request per 5 menit disesuaikan dengan plan user.
4

Request diteruskan ke model

Server memilih model dari provider aktif lalu mengirim request.
5

Usage dicatat

Setelah selesai, token usage disimpan ke ai_usage.
Perilaku yang perlu dipahami:
  • 401 berarti user belum terautentikasi,
  • 429 bisa berarti rate limit request atau monthly usage limit,
  • 503 biasanya berarti provider belum dikonfigurasi.
Kalau kamu butuh kontrak endpoint yang lebih spesifik, lanjutkan ke API reference.