Adds the Phase 4 requirement docs that align the customer app with the new HaloBestie Figma design dump. - requirement/flow_customer.md: source-of-truth numbered flow (input) - requirement/flow_customer.mermaid.md: 6 mermaid diagrams + Figma cross-ref - requirement/phase4-customer-flow.md: PRD (15 functional sections) - requirement/phase4-customer-flow-plan.md: 10-stage implementation plan - .gitignore: exclude requirement/Figma.zip + extracted Figma/ folder Resolved product decisions: no free trial (replaced by configurable first-session discount), pricing has independent chat/call groups, voice-call mode is chat-with-badge (mitra shares Meet link manually), social login is server-driven via /api/shared/auth-providers, ESP tags are info-only (not used for matching). No code changes; implementation starts at plan stage 0 (design system). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.8 KiB
Application Flow for Customer App
We are defining customer flow along with the app referenced on the claude design
Customer App Flow:
- Splash screen -> S1 - Splash
- Show home screen -> Home
- Check for session existence (through JWT):
- when No session found, show login panel on top -> Home (1st time)
- when session found, show profil panel on top -> Home (returning)
- Check for notification allowance
- If not allowed -> shows Home + notif banner
- If allowed, go to next step
- CTA Of, Aku mau Curhat -> New User (1) | Curhat Sama Bestie Baru -> Existing user (2)
-
New User
-
Check for user call sign existence
- Not Exist -> Shows S2 - Nama
-
Verification request (OTP)
-
Verify phone number
- ESP Screen -> Shows S5 (selection)
- USP Screen -> Shows S5b. USP Screen
- Phone number input -> show S3a · Input WhatsApp
- Phone number OTP => show S3b · OTP verification
- One time Paywal -> Shows s6 - paywall Rp.2000
- Payment Screen -> Only QRIS
-
Stay anonymous
- ESP Screen -> Shows S5 (selection)
- USP Screen -> Shows S5b. USP Screen
- Curhat method -> shows Pilih cara curhat
- Duration selection -> shows Pemilihan harga (full screen)
- Payment Screen -> Shows Cara bayar (QRIS-first)
-
-
Xendit payment screen (webview or other view)
-
Check for payment status status:
- 20 minutes -> Payment set to expired. Shows Pembayaran expired
- Pay -> Go to next step
-
Check for notification allowance
- If not allowed -> shows Aktifkan notifikasi
- if Izinkan Notifikasi CTA -> Navigate to enable notification in system
- else (Nanti Saja) -> Go to next step
- If allowed, go to next step
- If not allowed -> shows Aktifkan notifikasi
-
Soft Prompt Searching -> Show S7 · Searching state . CTA Aku ngerti, Lanjut
-
Blast chat session pair request -> Show S7 · Timeout 5 menit without CTA
-
Blast chat session timeout status (5 minutes timeout):
- Before timeout -> Show S7 · Timeout 5 menit without CTA
- Timeout -> Show S7 · Timeout 5 menit with CTA Coba Cari Lagi and ghost CTA button Coba cari lagi nanti that navigate to home
- No Timeout -> Go to next step
-
Match Found -> Shows S9 · Match found
-
-
Returning User
- CTA Curhat sama Bestie Baru -> Shows Bestie Choice Sheet · returning user
- Bestie yang udah kenal CTA -> Shows Bestie History List · pilih bestie lama
- Bestie offline -> Shows Bestie Offline Popup · returning user
- Cari Bestie Lain CTA -> Go to Bestie Baru CTA of returning user
- Tanya admin CTA -> Shows Sheet · tanya admin
- Bestie online
- Request chat session pair -> Shows Menunggu bestie tertentu
- Bestie offline -> Shows Bestie Offline Popup · returning user
- Bestie Baru CTA
- Soft Prompt Searching -> Show S7 · Searching state . CTA Aku ngerti, Lanjut
- Blast chat session pair request -> Show S7 · Timeout 5 menit without CTA
- Blast chat session timeout status (5 minutes timeout):
- Before timeout -> Show S7 · Timeout 5 menit without CTA
- Timeout -> Show S7 · Timeout 5 menit with CTA Coba Cari Lagi and ghost CTA button Coba cari lagi nanti that navigate to home
- No Timeout -> Go to next step
- Match Found -> Shows S9 · Match found
- Bestie yang udah kenal CTA -> Shows Bestie History List · pilih bestie lama
- CTA Curhat sama Bestie Baru -> Shows Bestie Choice Sheet · returning user
-
Chat Room -> S10 · Last 2 Minutes Chat without snackbar reminder
-
3 minutes left -> Shows S10 · Snackbar reminder
-
2 minutes left -> Shows S10 · Last 2 Minutes Chat
-
Times up -> Shows S10 · Floating banner expired
-
CTA Perpanjang -> Shows Time-up sheet (5 opsi)
-
Shows Time Topup bottom sheet -> Shows Time-up sheet (5 opsi)
- Perpanjang CTA -> Go to Payment Screen, but now without blast but instead asking same Mitra for approval.
- Cukup, Akhiri Sesi CTA -> Popup · konfirmasi akhiri (1)
- Lanjut Akhiri CTA -> Shows Popup · konfirmasi akhiri (2)
- Tulis Pesan Penutup CTA -> Shows Pesan penutup sheet
- Kirim & Akhiri sesi CTA -> Shows S11 · Terima kasih udah cerita
- Mitra reject -> Shows Bestie Offline Popup · returning user
- Lewat - Langusng akhiri CTA -> Shows S11 · Terima kasih udah cerita
- Kirim & Akhiri sesi CTA -> Shows S11 · Terima kasih udah cerita
- Lewati Saja CTA -> Shows S11 · Terima kasih udah cerita
- Tulis Pesan Penutup CTA -> Shows Pesan penutup sheet
- Gak Jadi, Balik CTA -> Go to Shows Time Topup Bottom Sheet
- Lanjut Akhiri CTA -> Shows Popup · konfirmasi akhiri (2)
-