28 — Admin Screens Information Architecture (Blueprint §3)
Cursor-ready master plan for implementing the full testimonial admin surface (screens 1–13) with navigation hierarchy, shared patterns, and cross-screen state contracts.
28 — Admin Screens Information Architecture (Blueprint §3)
Section titled “28 — Admin Screens Information Architecture (Blueprint §3)”Source: 02-Implementation-Blueprint.md — §3) Admin Screens and Fields (Detailed).
Product alignment: 01-Post-Purchase-Video-Testimonial-Collector-Plan.md — merchant-facing control center for campaigns, moderation, publication, analytics, and billing.
This document is a build spec only. No code changes are implied until a task references this file.
Related: screen-specific plans 05 to 27.
0) Goal (one sentence)
Section titled “0) Goal (one sentence)”Provide a single master architecture for all admin/public screens so implementation stays consistent in navigation, shared components, state flow, and ownership across screen-specific plans.
1) Blueprint §3 scope recap
Section titled “1) Blueprint §3 scope recap”Blueprint recommends 13 screens:
- Dashboard
- Campaigns List
- Campaign Create/Edit
- Templates
- Submissions Inbox
- Submission Detail
- Published Content
- Widget Settings (+8.1 split)
- Moderation Settings
- Requests Log
- Analytics
- Billing & Usage
- Public Submission Page (
/t/:token)
This file defines how they fit together as one coherent product.
2) Screen ownership map (single source)
Section titled “2) Screen ownership map (single source)”| Screen | Route | Plan file |
|---|---|---|
| 1 Dashboard | /app | 19-dashboard-screen-1.md |
| 2 Campaigns List | /app/testimonial-campaigns | 17-campaigns-list-screen-2.md |
| 3 Campaign Create/Edit | /app/testimonial-campaigns/:id | 18-campaign-create-edit-screen-3.md |
| 4 Templates | /app/testimonial-templates | 16-templates-screen-4.md |
| 5 Submissions Inbox | /app/testimonials | 09-submissions-inbox-screen-5.md |
| 6 Submission Detail | /app/testimonials/:id | 10-submission-detail-screen-6.md |
| 7 Published Content | /app/testimonials/published | 11-published-content-screen-7.md |
| 8 Widget Settings (+8.1) | /app/testimonials/widget | 05-storefront-widgets-and-read-api.md |
| 9 Moderation Settings | /app/testimonials/moderation | 12-moderation-settings-screen-9.md |
| 10 Requests Log | /app/testimonials/requests | 13-requests-log-blueprint-screen-10.md |
| 11 Analytics | /app/testimonials/analytics | 14-analytics-blueprint-screen-11.md |
| 12 Billing & Usage | /app/testimonials/billing | 15-billing-and-usage-blueprint-screen-12.md |
| 13 Public Submission | /t/:token | 06-public-submission-page-screen-13.md |
Use this table to avoid duplicate or conflicting route implementations.
3) Navigation IA (merchant mental model)
Section titled “3) Navigation IA (merchant mental model)”Group nav items by workflow stage:
3.1 Acquire
Section titled “3.1 Acquire”- Campaigns
- Templates
3.2 Collect
Section titled “3.2 Collect”- Requests Log
- Public submission is external-facing (not in admin nav)
3.3 Moderate
Section titled “3.3 Moderate”- Submissions
- Moderation Settings
3.4 Publish
Section titled “3.4 Publish”- Published Content
- Widget Settings
3.5 Optimize
Section titled “3.5 Optimize”- Dashboard
- Analytics
- Billing
This sequence matches real merchant lifecycle and reduces onboarding confusion.
4) Cross-screen state contracts
Section titled “4) Cross-screen state contracts”Define consistent state ownership so screens do not fight each other.
4.1 Campaign state
Section titled “4.1 Campaign state”- Screen 2/3 own campaign status and targeting.
- Screen 4 references campaign for templates but should not mutate campaign state implicitly.
4.2 Submission state
Section titled “4.2 Submission state”- Screen 5/6 own moderation states (
pending/approved/rejected/archived). - Screen 7 owns visibility placement controls and live publication ordering.
- Screen 6 may toggle publish, but if both screens can change it, behavior must be identical and logged.
4.3 Widget state
Section titled “4.3 Widget state”- Screen 8 owns storefront defaults and layout settings.
- Screen 7 decides what content is eligible for display.
4.4 Analytics/Billing state
Section titled “4.4 Analytics/Billing state”- Screens 1, 10, 11, 12 are read-heavy and must derive from canonical request/submission/media data (not ad-hoc counters in UI memory).
5) Shared UI/interaction standards
Section titled “5) Shared UI/interaction standards”Apply these across all admin screens:
authenticate.admin(request)in loader/action.shopIdtenant scoping on all queries/writes.- URL search params for filters/pagination.
- Consistent status badges and terminology.
- Toast/banner feedback for all actions.
- Empty states with clear CTA to the next logical screen.
Reference 24-build-notes-execution-standards-blueprint-section-10.md.
6) Shared domain vocabulary (must stay consistent)
Section titled “6) Shared domain vocabulary (must stay consistent)”Use exact terms consistently:
- Request = outreach unit (
TestimonialRequest) - Submission = customer-provided testimonial (
TestimonialSubmission) - Published = storefront-visible flag (
published=true) - Approved = moderation status
- Featured/Pinned = merchandising weight
Avoid mixing “review”, “testimonial”, “request” interchangeably in action labels.
7) Global data contracts by screen type
Section titled “7) Global data contracts by screen type”7.1 CRUD-heavy screens
Section titled “7.1 CRUD-heavy screens”- Screen 2,3,4,6,7,8,9
- Need robust action validation and conflict-safe writes.
7.2 Operational monitoring screens
Section titled “7.2 Operational monitoring screens”- Screen 1,10,11,12
- Need performant aggregate queries and date controls.
7.3 Public capture screen
Section titled “7.3 Public capture screen”- Screen 13
- Needs token security, consent enforcement, and anti-abuse.
8) End-to-end merchant journeys mapped to screens
Section titled “8) End-to-end merchant journeys mapped to screens”Journey A: Set up campaigns
Section titled “Journey A: Set up campaigns”- Dashboard (see current state)
- Campaigns list
- Campaign create/edit
- Templates
Journey B: Process incoming content
Section titled “Journey B: Process incoming content”- Requests log (delivery health)
- Submissions inbox
- Submission detail moderation
- Published content
Journey C: Improve outcomes
Section titled “Journey C: Improve outcomes”- Widget settings
- Analytics
- Billing and usage
These journeys should guide onboarding hints and cross-links.
9) Cross-screen linking requirements
Section titled “9) Cross-screen linking requirements”Required deep links:
- Dashboard pending CTA -> Submissions
tab=pending - Campaign row -> Campaign detail
- Request row (submitted) -> Submission detail
- Submission detail -> Published list (after publish)
- Billing alerts -> upgrade flow
Optional:
- Widget screen preview link to storefront page with app blocks.
10) Implementation sequencing (screen architecture level)
Section titled “10) Implementation sequencing (screen architecture level)”Recommended order:
- Screen 2 + 3 + 4 (campaign setup)
- Screen 10 + backend send pipeline visibility
- Screen 13 (public capture)
- Screen 5 + 6 + 9 (moderation core)
- Screen 7 + 8 (publication and storefront)
- Screen 1 + 11 + 12 (optimization and reporting)
This order optimizes merchant value delivery and testability.
11) Architecture-level acceptance checklist
Section titled “11) Architecture-level acceptance checklist”- Every blueprint screen has an implemented route and owner plan.
- Navigation is coherent and grouped by merchant workflow.
- Cross-screen terminology and status semantics are consistent.
- Shared filters/date handling patterns are reused.
- Deep links between operational screens are working.
- No duplicate ownership of the same business state without explicit contract.
12) References
Section titled “12) References”02-Implementation-Blueprint.md— Section 321-route-and-file-map-blueprint-section-6.md24-build-notes-execution-standards-blueprint-section-10.md- Screen plans:
05–19
13) Note on numbering
Section titled “13) Note on numbering”This folder already includes 05 through 27 plans. This file is 28-....