A clickable proposal for how a first-time player gets into the Kaki app. Three taps to real content, no account needed. Every question is asked at the moment its answer pays off. Try each branch with the buttons under the phone.
kaki.introSeen. It explains in words instead of showing anything, and promises “venues around you” while city detection is off./, so the action that sent you here is lost.PushSync asks for OS notification permission the moment a session exists, before the player has any reason to say yes. iOS asks only once.profileBasicsDue. The root gate then forces gender + player level (5 levels, no default) + the Terms tick. It is required, the only exit is Sign out, and it re-fires on every navigation. The minted name and username are never shown for you to confirm.profileBasicsDue true after a 200, so every new account looped back to onboarding with Sign out as the only exit.mahjongTypes, although Cari Kaki and events match on them. Names like “dewi.lestari” come from the email and are never confirmed.@kaki/i18n, default id).| Old | New |
|---|---|
| /intro (3 slides) | Welcome (1 screen) + optional City + optional Experience |
| City chip only | City asked at first run (skippable); chip stays on Home |
| /sign-in → “/” | Sign-in with a context line → back to the action |
| Push at sign-in | A soft ask after the first join request or booking, then the OS prompt |
| Forced “completing” form | “Ini kamu?” (name, username, Terms) + “Dua hal singkat”, inside the sign-up and never as a later gate |
| Legacy create form | Same two screens (name/username are prefilled when minted, typed otherwise) |
| W6 styles / experience | Experience at first run (device); styles after the first recorded game |
| Guest checkout | Unchanged (name + email), plus “Simpan ke akun” on the ticket |
| Field | Used for | Asked |
|---|---|---|
| City | Scopes Home venues, events, Cari Kaki (device city store) | First run, skippable |
| Experience | Home’s first card; pre-selects level | First run, skippable, device only |
| Name | Shown on tables, rosters, boards | “Ini kamu?” (prefilled) |
| Username | Friend search, links; change later in Settings | “Ini kamu?” (prefilled) |
| Terms tick | Apple 1.2 UGC EULA, recorded server-side (0118) | “Ini kamu?” |
| Gender | Private; the open-table gender criterion and filter | Sign-up, or the first Cari Kaki join (variant) |
| Level | Cari Kaki skill filter and badge; table criteria | Same as gender, pre-selected |
| Styles | Matching tables and events; legacy mahjongType | After the first recorded game or table post |
| Notifications | Join accepted, booking-end reminders (local), inbox | After the first join request or booking |
| Guest name + email | Ticket and receipt for a guest booking | Checkout (unchanged) |
| Photo | Avatar (monogram until then) | Never asked; Profile edit |
| W6 only; nothing in the app reads it | Not asked (see questions) |
returnTo and resumes it, instead of replace("/").PushSync registers a token only if permission was already granted, and never prompts.profileBasicsDue is still set later, show a card, not a redirect. That ends the whole class of onboarding loops.