chore: initial project import
Some checks failed
CI - Production Readiness / Verify (push) Has been cancelled

This commit is contained in:
Wira Basalamah
2026-04-21 09:29:29 +07:00
commit adde003fba
222 changed files with 37657 additions and 0 deletions

View File

@ -0,0 +1,871 @@
# 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.