SCREEN 01

Login

POST /api/login

Entry point for all users. The app directs to the correct dashboard after login based on the user_type field in the response. Platform admins (super_admin) land on the Platform Dashboard.

Wireframe

https://app.engineeringservices.pk/login
⚙ Engineering Services
Platform Administration
Forgot password? Contact your platform administrator.

Post-login routing

user_type in responseRedirects to
super_admin/platform/dashboard
admin / staff/admin/dashboard
employee/employee/dashboard
contractor/contractor/dashboard
client/client/dashboard
Error handling: Show inline error banner "These credentials do not match our records" on 401. Show "Account is inactive" on 403. Never reveal which field is wrong.
SCREEN 02

Platform Dashboard

GET /api/platform/dashboard

The first screen after login for super_admin. Shows live KPI cards, plan utilization breakdown, and recent tenant activity.

Wireframe

https://app.engineeringservices.pk/platform/dashboard
/ Platform superadmin 3
Overview KPIs
🏢
Total Tenants
3
all-time
Active
2
is_active = true
Suspended
1
total − active
📋
Active Plans
2
subscription tiers
Plan Utilization
PlanTenantsPrice / moStatus
Starter Tier1PKR 49Active
Pro2PKR 299Active
Recent Tenants (last 5)
BusinessPlanStatusJoined
BuildCorp PakistanProActive20 Jun 2026
AlphaStruct LtdProActive18 Jun 2026
Pak Engineering ServiceStarter TierSuspended15 Jun 2026
Refresh: Re-fetch dashboard on each page visit (no cache). Show a "Last updated" timestamp. Unread notification badge sources from GET /api/platform/notifications?is_read=false count.
SCREEN 03

Tenant List

GET /api/platform/tenants

Paginated table of all tenant businesses. Supports search, plan filter, and active/inactive toggle. Each row links to tenant detail and exposes quick-action buttons.

Wireframe

https://app.engineeringservices.pk/platform/tenants
Tenantssuperadmin
#Business NameOwnerPlanStatusActiveActions
1Pak Engineering Service
admin@engineering.test
Seed OwnerStarter Tier Suspended
2AlphaStruct Ltd
alpha@struct.test
Ali HassanPro Active
3BuildCorp Pakistan
jk@buildcorp.test
Jahanzaib KhanPro Active
Showing 3 of 3 · Page 1 of 1
Suspend vs Delete: The "Suspend" button calls PUT /api/platform/tenants/{id} with is_active: false. The "Delete" button calls DELETE /api/platform/tenants/{id} — but both result in suspension (no hard-delete). Show a confirm dialog before either action.
SCREEN 04

Invite Tenant

POST /api/platform/tenants

Modal or full-page form to onboard a new business tenant. On success, shows the one-time admin password in a copyable alert.

Wireframe

https://app.engineeringservices.pk/platform/tenants/invite

Invite New Tenant

Used as admin login email
✓ Tenant invited successfully
Admin username: buildcorppakistan_admin
One-time password: xK9#mP2vQwLn
⚠ This password will not be shown again. Share it with the tenant admin via a secure channel.
SCREEN 05

Tenant Detail / Edit

GET + PUT /api/platform/tenants/{id}

View full tenant record and edit any field inline. Changing is_active to false triggers a suspension confirmation dialog.

Wireframe

…/platform/tenants/3
BuildCorp Pakistan
subdomain: buildcorp-pakistan · ID #3
Active
SCREEN 06

Subscription Plans

GET /api/platform/subscription-plans

Manage pricing tiers. Cards show key limits at a glance. Inline edit opens the plan form.

Wireframe

…/platform/plans
Subscription Plans
Starter Tier
Active
PKR 49/mo
Max Projects5
Max Locations1
Max Employees10
Client Portal
Tenants on plan1
Pro ★
Active
PKR 299/mo
Max Projects
Max Locations
Max Employees
Client Portal
Tenants on plan2
Delete with tenants: Show dimmed delete button with tooltip "Has 2 tenants — will deactivate instead of delete". On confirm, API returns 422 with tenants_assigned — display as informational, not an error.
SCREEN 07

Create / Edit Plan

POST · PUT /api/platform/subscription-plans

Form for creating or editing a subscription plan. The -1 = unlimited convention is hidden from the user — show a "Unlimited" checkbox that sets the value to -1 behind the scenes.

Wireframe

…/platform/plans/create

New Subscription Plan

Usage Limits (leave blank or check Unlimited)
UX for unlimited: When the "Unlimited" checkbox is checked, disable the number input and send -1 to the API. Display symbol in read-only views where API returns -1.
SCREEN 08

Audit Log

GET /api/platform/notifications

Chronological feed of platform events. Unread events are highlighted. Supports filter by category and text search across event code, title, and body.

Wireframe

…/platform/audit-log
Audit Logsuperadmin
New Tenant Registration info
BuildCorp Pakistan signed up for the Pro tier.
EVT-00003 · tenant_created · 20 Jun 2026 10:15 · by superadmin
New Subscription Plan Created info
Enterprise plan created at PKR 799/mo with unlimited limits.
EVT-00002 · plan_created · 20 Jun 2026 09:40 · by superadmin
Tenant Suspended action_taken
Pak Engineering Service was deactivated via platform delete.
EVT-00001 · tenant_suspended · 17 Jun 2026 14:22 · by superadmin
read
3 events · 2 unread · Page 1 of 1
Unread badge: The topbar notification count is fetched via GET /api/platform/notifications?is_read=false&per_page=1 and reading pagination.total. Poll every 60 seconds.