# Struktur Screen WhatsApp Inbox MVP Dokumen ini merangkum struktur screen dari A-Z berdasarkan PRD, sitemap, user flow, ERD, roadmap, dan arsitektur teknis. Tujuan dokumen: - menjadi acuan desain UI/UX - memetakan semua screen yang dibutuhkan untuk MVP - memisahkan kebutuhan per role - membantu prioritas desain agar tidak melebar ## 1. Prinsip Desain Screen - Produk ini adalah mesin operasional percakapan, jadi inbox adalah pusat desain. - Screen harus dibedakan berdasarkan role: `super_admin`, `admin_client`, `agent`. - Mayoritas aktivitas inti harus selesai dalam 2-3 klik. - Desktop-first, tetapi tetap responsif untuk tablet/mobile. - Data tenant tidak boleh tercampur antar workspace. - State penting harus jelas: loading, empty, success, error, disconnected. ## 2. Peta Besar Screen Kelompok screen MVP: 1. Public / Auth 2. Shared App Shell 3. Super Admin 4. Admin Client 5. Agent 6. Shared Reusable Screens / States ## 3. Public / Auth Screens ### 3.1 Login Tujuan: - user masuk ke workspace sesuai role Elemen inti: - email - password - show/hide password - submit button - forgot password link - error alert Catatan desain: - harus bersih dan cepat dipahami - perlu state invalid credential ### 3.2 Forgot Password Tujuan: - user meminta reset password Elemen inti: - email input - submit reset request - success info - back to login ### 3.3 Reset Password Tujuan: - user mengganti password dari link reset Elemen inti: - new password - confirm password - password rules - submit - expired token state ### 3.4 Invitation Acceptance Tujuan: - user baru menerima invite dan membuat password awal Elemen inti: - invited email - full name - password setup - confirm password - accept invitation ### 3.5 Unauthorized / Forbidden Tujuan: - memberi feedback saat user membuka halaman di luar izin role Elemen inti: - message - back to dashboard ## 4. Shared App Shell Screen ini bukan halaman bisnis utama, tapi fondasi semua role. ### 4.1 App Shell Desktop Elemen inti: - sidebar - topbar - page header - global search - notifications - profile menu - tenant/workspace indicator - channel status indicator ### 4.2 Sidebar by Role Varian: - super admin sidebar - admin client sidebar - agent sidebar ### 4.3 Profile Menu Isi: - my profile - change password - logout ### 4.4 Global Search Overlay Tujuan: - cari conversation, contact, tenant, atau user secara cepat ### 4.5 Notification Center Jenis notifikasi: - assignment update - channel disconnected - campaign completed - delivery failure - invitation/user update ## 5. Super Admin Screens Super Admin fokus ke governance, tenant, channel, billing, dan kesehatan platform. ### 5.1 Super Admin Dashboard Tujuan: - melihat KPI global platform Widget inti: - active tenants - active channels - disconnected channels - message volume overview - delivery failure summary - subscription health - platform alerts Sub-state: - no tenant yet - high error alert ### 5.2 Tenant List Tujuan: - melihat semua tenant Elemen inti: - search - filters: status, plan, channel status - table/list tenants - quick actions - create tenant button ### 5.3 Create Tenant Form fields: - company name - tenant name - slug/workspace - timezone - subscription plan - initial admin email ### 5.4 Tenant Detail Section: - company profile - subscription plan - channel status - usage summary - seat usage - recent activity snapshot Quick actions: - edit tenant - suspend/reactivate - connect channel - view audit ### 5.5 Edit Tenant Elemen inti: - profile form - timezone - status - plan ### 5.6 Suspend / Reactivate Tenant Confirmation Tujuan: - mencegah aksi sensitif dilakukan tanpa konfirmasi ### 5.7 Channel List Tujuan: - melihat semua channel WhatsApp yang terkoneksi Elemen inti: - connected numbers list - provider - status - webhook status - last sync - tenant owner ### 5.8 Connect Channel Form fields: - provider - WABA ID - phone number ID - display number - webhook configuration - verification/test action State penting: - validation success - connection failed ### 5.9 Channel Detail Section: - WhatsApp account info - phone status - webhook health - last sync status - delivery issue summary - reconnect action - disconnect action ### 5.10 Subscription Plan Catalog Tujuan: - melihat daftar plan paket Elemen inti: - plan cards/table - message quota - seat quota - broadcast quota - feature list ### 5.11 Tenant Subscription List Tujuan: - melihat plan aktif tenant Elemen inti: - tenant - current plan - usage - renewal state - upgrade/downgrade history shortcut ### 5.12 Invoices List Elemen inti: - invoice number - tenant - period - amount - payment status - due date ### 5.13 Invoice Detail Elemen inti: - invoice summary - line items - tax - payment status - paid date ### 5.14 Platform Reports Area laporan: - global message traffic - tenant growth - broadcast usage - failure and retry monitoring - tenant activity summary ### 5.15 Audit Log Tujuan: - melihat log aktivitas lintas platform Elemen inti: - filters: tenant, actor, entity, date - event list - log detail drawer/modal ### 5.16 Security Events Elemen inti: - failed logins - suspicious access - role/permission changes ### 5.17 API / Webhook Logs Tujuan: - investigasi issue integrasi Elemen inti: - provider event list - process status - failed reason - payload preview ### 5.18 System Notifications / Alerts Tujuan: - melihat alert penting secara terpusat ### 5.19 Platform Settings Area: - platform profile - pricing config - feature flags - template policy config ## 6. Admin Client Screens Admin Client adalah pengguna operasional tenant yang paling lengkap. ### 6.1 Admin Dashboard Widget inti: - today conversation summary - open conversations - waiting reply - resolved today - unresolved > x hours - active agents - agent workload snapshot - broadcast performance snapshot - contact growth Shortcut: - go to inbox - create campaign - add contact - invite user ### 6.2 Shared Inbox - All Conversations Tujuan: - pusat semua percakapan tenant Elemen inti: - tab/filter: all, unassigned, assigned to me, team inbox, resolved, spam/archived - search conversation/contact - channel filter - agent filter - status filter - priority filter - conversation list - unread badge - last message preview ### 6.3 Shared Inbox - Conversation Detail Ini screen paling penting di seluruh produk. Area utama: - conversation header - customer identity card - tags - assignment panel - status selector - priority selector - message timeline - attachment preview - quick replies / canned responses - template picker - reply composer - internal notes - activity log Quick actions: - assign / reassign - mark pending - mark resolved - archive / spam - add note - add tag ### 6.4 Shared Inbox - Empty / No Selection State Tujuan: - menampilkan keadaan saat belum ada conversation dipilih ### 6.5 Shared Inbox - Disconnected Channel State Tujuan: - memberi alert saat channel tenant bermasalah ### 6.6 Contact List Elemen inti: - search - filters: tag, segment, opt-in status, channel - table/list contacts - import button - export button - add contact button ### 6.7 Create Contact Fields: - full name - phone number - email - country code - tags - opt-in status - external ref ### 6.8 Edit Contact Tujuan: - mengubah data contact yang sudah ada ### 6.9 Contact Detail Section: - profile - custom fields - tags - segment membership - last interaction - opt-in / opt-out status - conversation history - campaign history ### 6.10 Import Contacts Elemen inti: - upload CSV - field mapping - validation preview - import summary ### 6.11 Export Contacts Elemen inti: - choose filter - choose export fields - export action ### 6.12 Segments / Lists Tujuan: - mengelola audience untuk broadcast Elemen inti: - segment list - create segment - edit rules - member count ### 6.13 Segment Detail Elemen inti: - segment metadata - rules - contacts preview - campaigns using this segment ### 6.14 Template List Elemen inti: - template name - category - language - approval status - channel - last updated - create template request ### 6.15 Create Template Request Fields: - template name - category - language - header type - body text - footer text - buttons ### 6.16 Template Detail Elemen inti: - content preview - provider template ID - approval status - rejected reason - related campaigns ### 6.17 Campaign List Tujuan: - melihat semua campaign broadcast Elemen inti: - search - status filter - channel filter - date filter - create campaign button - summary cards ### 6.18 Create Campaign Langkah desain yang disarankan: 1. isi metadata campaign 2. pilih channel 3. pilih template 4. pilih audience 5. pilih send now atau schedule 6. review recipient estimate 7. submit Field inti: - campaign name - campaign type - template - audience source - segment/manual/import - scheduled at ### 6.19 Campaign Review Tujuan: - memastikan user review sebelum enqueue broadcast Elemen inti: - campaign summary - template preview - audience estimate - warnings - confirm send ### 6.20 Campaign Detail Section: - campaign metadata - audience summary - send timeline - sent / delivered / read / failed stats - error breakdown - recipient list link ### 6.21 Campaign Recipients Elemen inti: - recipient status list - failure reason - search contact - filter send status ### 6.22 Team / Users List Elemen inti: - user list - role filter - status filter - create user - edit user - activate/deactivate ### 6.23 Create User Fields: - full name - email - role - status ### 6.24 Edit User Tujuan: - update data user dan akses ### 6.25 User Detail Section: - profile info - role - status - last login - assigned conversations count - performance snapshot ### 6.26 Team Performance Snapshot Tujuan: - melihat performa agent secara ringkas Metrik: - handled conversations - avg response time - resolved count - active workload ### 6.27 Reports Overview Jenis laporan: - response time - resolution rate - agent productivity - campaign result - contact growth ### 6.28 Response Time Report ### 6.29 Resolution Report ### 6.30 Agent Productivity Report ### 6.31 Campaign Analytics Report ### 6.32 Contact Growth Report Pola desain untuk semua report: - filter bar - KPI summary - chart area - table detail - export action jika diperlukan ### 6.33 Tenant Settings Submenu: - tenant profile - business hours - auto assignment rules - chat tags - canned responses - webhook / integration settings ### 6.34 Tenant Profile Settings ### 6.35 Business Hours Settings ### 6.36 Auto Assignment Rules ### 6.37 Chat Tags Management ### 6.38 Canned Responses ### 6.39 Webhook / Integration Settings ### 6.40 Billing & Subscription Elemen inti: - current plan - quota usage - billing history - upgrade prompt ### 6.41 Usage Quota Detail Metrik: - message quota - seat quota - broadcast quota - current usage ### 6.42 Billing History Elemen inti: - invoice list - payment status - periods ### 6.43 Tenant Audit Log Jenis log: - user activity - message action logs - campaign action logs ## 7. Agent Screens Agent fokus pada eksekusi percakapan. ### 7.1 Agent Dashboard Widget inti: - assigned to me - unread conversations - waiting customer reply - due follow-up - personal performance snapshot ### 7.2 My Inbox - Assigned Conversations Elemen inti: - assigned conversation list - unread indicators - search - filter by status ### 7.3 Unassigned Queue Tujuan: - agent mengambil conversation dari backlog jika diizinkan Elemen inti: - queue list - conversation preview - take assignment action ### 7.4 Mentioned Conversations Tujuan: - melihat conversation yang melibatkan agent ### 7.5 Resolved History Tujuan: - melihat percakapan yang pernah diselesaikan ### 7.6 Agent Conversation Detail Komponen inti hampir sama dengan admin inbox detail, tetapi lebih terbatas. Area: - conversation header - customer card - tags - internal notes - status change - reply composer - template picker - canned responses - activity timeline terbatas ### 7.7 Agent Contact List Scope terbatas: - hanya contact yang relevan - akses field lebih sedikit ### 7.8 Agent Contact Detail Elemen inti: - identity - tags - previous chats ### 7.9 Quick Tools Subscreen: - canned responses - template picker - notes / follow-up reminders ### 7.10 My Performance Metrik: - response stats - resolved chats - avg response time ## 8. Shared Reusable Screens Screen ini dipakai lintas role atau lintas modul. ### 8.1 My Profile Elemen inti: - avatar - full name - email - role - tenant/workspace ### 8.2 Edit Profile Fields: - full name - avatar ### 8.3 Change Password Fields: - current password - new password - confirm password ### 8.4 Not Found ### 8.5 Generic Error ### 8.6 Empty State Library Empty state yang perlu didesain: - no conversations - no contacts - no campaigns - no templates - no users - no reports data - no tenants - no invoices ### 8.7 Confirmation Modal Library Kasus umum: - delete - deactivate - suspend tenant - disconnect channel - send campaign now - mark spam ### 8.8 Toast / Alert Patterns Jenis: - success - warning - error - info ### 8.9 Loading / Skeleton Patterns Prioritas: - dashboard cards - inbox list - conversation detail - contact table - campaign detail ## 9. State Kritis yang Wajib Didukung di Desain Untuk tiap screen penting, siapkan varian: - default - loading - empty - success - validation error - permission denied - disconnected/integration issue Screen yang wajib punya state lengkap: - login - shared inbox - conversation detail - contact import - create campaign - campaign detail - connect channel - reports ## 10. Urutan Prioritas Desain Kalau desain mau dikerjakan bertahap, urutan paling masuk akal: 1. Login, forgot password, reset password 2. App shell: sidebar, topbar, profile menu 3. Admin dashboard 4. Shared inbox list 5. Conversation detail 6. Contact list 7. Contact detail 8. Team/users list 9. Create/edit user 10. Template list 11. Campaign list 12. Create campaign 13. Campaign detail 14. Reports overview 15. Billing & subscription 16. Audit log 17. Super admin dashboard 18. Tenant list 19. Tenant detail 20. Channel connect/detail 21. Agent dashboard 22. Agent inbox variants 23. Shared empty/error/loading states ## 11. Screen Count Kasar Estimasi jumlah screen unik untuk desain MVP: - Public/Auth: 5 - Shared shell/reusable: 9 - Super Admin: 15-19 - Admin Client: 30+ - Agent: 10 Total realistis: - sekitar `65-75 screen/state` Kalau dihitung hanya screen inti tanpa semua varian state: - sekitar `35-45 layout utama` ## 12. Rekomendasi Paket Desain Supaya efisien, desain bisa dibagi jadi 3 paket: ### Paket A - Core Inbox - auth - app shell - admin dashboard - shared inbox - conversation detail - agent inbox - profile/basic settings ### Paket B - Operasional - contacts - team/users - templates - campaigns - campaign detail ### Paket C - Governance & SaaS - reports - billing - audit log - super admin dashboard - tenant management - channel management ## 13. Kesimpulan Kalau tujuan Anda adalah menyiapkan desain sebelum implementasi, fokus pertama harus ke: - `auth` - `app shell` - `shared inbox` - `conversation detail` - `contacts` - `campaign flow` Itu area yang paling menentukan apakah produk ini terasa seperti dashboard WhatsApp operasional yang serius atau hanya panel admin biasa.