Appearance
User Flow
Authentication Flow
User mengunjungi halaman login
better-auth menangani session via cookie
Setelah login, user diarahkan ke dashboard
Destiny Analysis Flow
Input Form (Unified)
- User membuka halaman
/destiny - Tab Input menampilkan form terpadu dengan field:
- Profile Name (opsional, untuk labeling history)
- Full Name (nama di akta kelahiran)
- Birth Date (date picker)
- Gender (Male / Female / Other)
- Birth Time — mode Exact (time picker) atau Range (dropdown 7 rentang waktu dengan midpoint otomatis)
- Birth City & Country
- Saat birth date dipilih, Weton (Primbon Jawa) dihitung otomatis dan ditampilkan (hari, pasaran, neptu)
- User menekan tombol Calculate Numerology atau Generate BaZi
Numerology (Client-Side)
- Engine kalkulasi deterministik berjalan di browser — tidak ada call ke server
- Hasil ditampilkan di tab Numerology: Life Path, Expression, Soul Urge, Personality, Maturity, Personal Year
- Setiap angka menampilkan calculation steps dan Master Number badge jika applicable
- Hasil otomatis tersimpan ke History (localStorage)
BaZi (Backend Proxy)
- Frontend memanggil
POST /v1/checkDestinyAccessuntuk cek usage limit - Jika quota habis, tampilkan pesan lock dengan alasan
- Jika quota tersedia, frontend membangun prompt dan memanggil
POST /v1/invokeDestiny - Backend:
- Verifikasi usage limit lagi
- Ambil
OPENAI_API_KEYdari env vars (tidak pernah dikirim ke client) - Proxy prompt ke OpenAI API
- Increment usage counter di database
- Return hasil LLM ke frontend
- Frontend parse dan render hasil di tab BaZi: Four Pillars, Day Master, Element Balance, Ten Gods, Luck Pillars, Life Guidance, Affirmations
- Hasil otomatis tersimpan ke History (localStorage)
History
- Tab History menampilkan daftar analisis terakhir (maksimal 20 entri)
- Setiap entri menampilkan profile name, nama, tanggal lahir, timestamp, dan badge sistem (Numerology / BaZi / Weton)
- User bisa klik entri untuk memuat kembali data dan hasil ke form
- User bisa menghapus entri individual dari history
- History disimpan di localStorage — tidak masuk ke backend database (sesuai kontrak saat ini)
- User membuka halaman
Journal Flow
- User membuka halaman
/journal - ...