110 lines
2.8 KiB
Markdown
110 lines
2.8 KiB
Markdown
# Dashboard Plan (Admin + User)
|
|
|
|
This file is the single dashboard planning and operations reference.
|
|
|
|
## 1) Dashboard objectives
|
|
|
|
1. Operate Dewemoji safely (subscriptions, webhooks, settings).
|
|
2. Manage Personal plan lifecycle and pricing.
|
|
3. Give Personal users fast keyword/API key management.
|
|
|
|
## 2) Current admin routes (implemented)
|
|
|
|
- `GET /dashboard/admin/analytics`
|
|
- `GET /dashboard/admin/users`
|
|
- `POST /dashboard/admin/users/tier`
|
|
- `GET /dashboard/admin/subscriptions`
|
|
- `POST /dashboard/admin/subscriptions/grant`
|
|
- `POST /dashboard/admin/subscriptions/revoke`
|
|
- `GET /dashboard/admin/pricing`
|
|
- `POST /dashboard/admin/pricing/update`
|
|
- `POST /dashboard/admin/pricing/reset`
|
|
- `GET /dashboard/admin/webhooks`
|
|
- `POST /dashboard/admin/webhooks/{id}/replay`
|
|
- `GET /dashboard/admin/settings`
|
|
- `POST /dashboard/admin/settings/update`
|
|
|
|
## 3) Admin module scope
|
|
|
|
### Analytics
|
|
|
|
- user/subscription/payment/webhook totals
|
|
- recent webhook and billing activity
|
|
|
|
### Users
|
|
|
|
- filter by tier/role/search
|
|
- controlled tier update operations
|
|
|
|
### Subscriptions and payments
|
|
|
|
- grant/revoke workflows
|
|
- provider/status visibility (`paypal`, `qris/pakasir`, `admin`)
|
|
- pending/paid/failed/expired status clarity
|
|
|
|
### Webhooks
|
|
|
|
- recent events list
|
|
- replay support
|
|
- idempotency-safe processing expectations
|
|
|
|
### Pricing
|
|
|
|
- edit plan values and provider toggles
|
|
- preserve change log snapshots for auditability
|
|
|
|
### Settings
|
|
|
|
- maintenance flag
|
|
- public access guard values (`public_enforce`, origins, extension IDs, hourly limit)
|
|
|
|
## 4) User dashboard scope
|
|
|
|
### User states
|
|
|
|
1. visitor: no dashboard
|
|
2. free logged-in: dashboard access with locked personalization areas
|
|
3. personal: full access
|
|
|
|
### User modules
|
|
|
|
- Overview (summary metrics)
|
|
- My Keywords (CRUD, filter, import/export)
|
|
- API Keys (create/revoke)
|
|
- Billing (current plan + payment history + resume pending)
|
|
- Preferences (theme/tone; optional expansion)
|
|
|
|
### UX priority
|
|
|
|
- quick-add keywords on emoji detail pages (primary)
|
|
- dashboard bulk management (secondary)
|
|
|
|
## 5) Billing integration expectations
|
|
|
|
Target data model coverage:
|
|
|
|
- `orders`
|
|
- `payments`
|
|
- `subscriptions`
|
|
- `webhook_events`
|
|
|
|
Required runtime behaviors:
|
|
|
|
1. webhook-confirmed status transitions
|
|
2. pending checkout cooldown enforcement
|
|
3. resume pending checkout from billing page
|
|
4. safe downgrade when no active subscription remains
|
|
|
|
## 6) Access and security
|
|
|
|
- Admin access is role-based session auth (`users.role = admin`).
|
|
- `X-Admin-Token` should remain internal/dev usage only.
|
|
- Log sensitive actions (tier changes, pricing updates, manual grants/revokes, webhook replays).
|
|
|
|
## 7) Implementation priorities
|
|
|
|
1. strengthen payments/subscriptions observability
|
|
2. finalize user dashboard CRUD ergonomics
|
|
3. enforce non-destructive confirmations for sensitive admin actions
|
|
4. add pagination/filter/sorting consistency across large admin lists
|