Admin Spec — Dashboard

Dashboard

Domain 1 (top-level) of the Enhanced Candidate A navigation structure. Replaces: Current passive dashboard that provides no actionable information. Primary workflow served: WF4 (Daily Monitoring — reduced from 4-5 screens to 1-3 screens) Key enhancement from Candidate B: Promoted to operational nerve center with configurable alert tiles and phase-aware prompts.


1. Screen: Dashboard

1.1 Purpose

Operational nerve center that surfaces exceptions, alerts, and phase-aware prompts so the admin can proactively identify and resolve issues. Replaces the current passive dashboard (weekly submission chart + daily notes + TA stats) that the admin ignores because it provides no actionable information.

Interview evidence (Q7 — "What would a useful dashboard show you?"):

Deprecated features (present in current dashboard, intentionally removed):

Design rationale: Candidate B's hub concept scored highest on dashboard depth. The Enhanced Candidate A design incorporates Candidate B's operational dashboard into Candidate A's domain-first sidebar structure. The dashboard is not a domain — it sits above all domains as the universal entry point, surfacing cross-domain alerts with pre-filtered deep links into the relevant domain screens.

1.2 Entry Points

1.3 Layout

Three zones, top to bottom:

Zone 1: Phase Prompt Bar (always visible)

Zone 2: Alert Tiles Grid (2x3 grid, responsive — collapses to single column on narrow viewports)

Zone 3: Quick Actions + Activity (bottom)

1.4 Phase Prompt Bar

Full-width bar at the top of the dashboard showing the current semester lifecycle phase. Provides contextual awareness and a direct link to the Semester Hub for the active semester.

Data source: semester table — active semester determined by is_current = 1

Phase Condition Display Link Target
Setup Active semester is_current=1 AND within 2 weeks of start_date AND setup checklist <100% complete "Semester [Name] Setup: X of Y items configured" + progress bar Semester Hub > Setup Checklist tab
Active Active semester is_current=1 AND not in setup or close phase "Week N of M — [Semester Name]" + key stats (students enrolled, submissions this week) Semester Hub > Overview tab
Close Active semester is_current=1 AND within 3 weeks of end_date "Semester [Name] Close: Step X of 5 — [Current Step Name]" Semester Hub > Close Workflow tab
No Active No semester with is_current=1 "No active semester. Create or activate a semester." Semester Management > Semesters

Phase detection logic (evaluated in order):

  1. If no semester has is_current=1 → No Active
  2. If NOW() < start_date + 14 days AND setup checklist has incomplete items → Setup
  3. If end_date - NOW() < 21 days → Close
  4. Otherwise → Active

Visual treatment:

1.5 Alert Tiles

Six configurable alert tiles arranged in a 2x3 grid. Each tile follows the Alert Tile pattern defined in 01-global-patterns.md Section 4.4. Tiles with count=0 are hidden to reduce visual noise — the dashboard shows only items that need attention.

Tile 1: Failed Payments

Tile 2: TAs Behind on Reviews

Tile 3: Students Falling Behind

Tile 4: Appointment Utilization (Year 2)

Tile 5: App Issues

Tile 6: Semester Progress (contextual)

This tile adapts its content based on the current semester phase, providing a summary view that complements the Phase Prompt Bar.

Phase Display Detail
Setup "Setup: X of Y configured" with mini progress bar Same data as Phase Prompt Bar, summarized as a tile. Shows count of completed vs. total setup checklist items.
Active Key monitoring metrics: total submissions this week + attendance at last live session "42 submissions this week · 87% attendance at last session"
Close Close workflow step progress "Close: Step X of 5 complete" with step names listed
No Active Hidden Tile not shown when no active semester

1.6 Quick Actions

Row of shortcut buttons below the alert tiles grid. Provides one-click access to the most common admin tasks without navigating through the sidebar.

Action Icon Behavior Target
Search Student Search (magnifying glass) Opens global search overlay with student entity type pre-selected Global Search (see 01-global-patterns.md Section 2)
View Active Semester Calendar Navigates to Semester Hub for the active semester. Disabled (grayed out) if no active semester. Semester Hub > Overview tab
Review Submissions Checkmark/tick Navigates to submissions list filtered to Under Review status for current semester Student Management > Submissions (filter: status=under_review, semester=current)
Send Notification Bell Opens notification creation flow Admin & System > Notifications

Layout: Horizontal row, equally spaced. Each button has an icon above the label. Subtle border/card style, not primary-button style (these are shortcuts, not primary actions).

1.7 States

State Condition Display
Normal (has alerts) One or more alert tiles have count > 0 Phase Prompt Bar + visible alert tiles + quick actions. Tiles with count=0 are hidden. Grid reflows to fill gaps.
All Clear All alert tiles have count = 0 Phase Prompt Bar + centered message: "Everything looks good. No issues to address." + quick actions row below. No alert tiles shown.
Loading Initial page load (first render) Skeleton Phase Prompt Bar (gray block, full width) + skeleton tile grid (6 placeholder tiles with pulsing animation) + skeleton quick action buttons. Follows Loading State pattern from 01-global-patterns.md Section 4.9.
Partial failure Some tiles load successfully but others fail (e.g., Stripe timeout on Failed Payments tile) Successfully loaded tiles display normally. Failed tiles show: gray card with "Unable to load" text + retry icon button. Clicking retry re-fetches that tile's data only. Phase Prompt Bar and quick actions unaffected.
No semester No active semester (is_current=1 not set on any semester) Phase Prompt Bar shows "No active semester" message with call-to-action. Alert tiles hidden (no semester context for calculations). Quick actions available (Search Student and Send Notification remain functional).

1.8 Role Variants

The dashboard adapts its content based on the logged-in user's role. See 01-global-patterns.md Section 3 for role definitions.

Admin Dashboard

Full dashboard as described in Sections 1.3–1.7 above. All tiles, all quick actions, Phase Prompt Bar visible.

TA Dashboard

TAs see a personalized dashboard scoped to their own students and schedule.

Element Admin View TA View
Phase Prompt Bar Shows semester phase + progress Hidden (TAs do not manage semesters)
Tile 1: Failed Payments Failed payment count Hidden (TAs do not handle billing)
Tile 2: TAs Behind on Reviews Count of TAs with overdue reviews Replaced with: "My Review Queue: X submissions pending" — count of student_submitted_assessment where assessment_status=0 AND student is assigned to this TA. Click → My Students with review queue filter.
Tile 3: Students Behind All students behind pace Scoped to TA's assigned students only. Same calculation but filtered to students in TA's assigned groups.
Tile 4: Appointment Utilization Y2 appointments system-wide Replaced with: "My Upcoming Appointments: X this week" — count of TA's own appointments for current week. Click → My Schedule.
Tile 5: App Issues Open issue count Hidden (TAs do not manage issues)
Tile 6: Semester Progress Semester-wide progress Hidden (TAs do not manage semesters)
Quick Actions Search Student, View Active Semester, Review Submissions, Send Notification "My Students" (→ My Students list), "My Schedule" (→ My Schedule view). Only two quick actions.

View-Only Dashboard

Same layout and tiles as Admin Dashboard with the following differences:

Support Staff Dashboard

Same as View-Only Dashboard:

1.9 Data Dependencies

Summary of all data sources the dashboard requires, for implementation planning.

Tile / Element Tables / APIs Fetch Strategy Cache TTL
Phase Prompt Bar semester Local DB query 15 min
Failed Payments billing_alerts Webhook-cached Real-time (event-driven)
TAs Behind on Reviews student_submitted_assessment, users Local DB query 5 min
Students Behind student_submitted_assessment, user_link_level_tag, semester Local DB query 15 min
Appointment Utilization appointments, level_tag Local DB query 15 min
App Issues Issue Queue table Local DB query 5 min
Semester Progress Setup checklist / submissions / close workflow state Local DB query 15 min
Quick Actions No data dependency N/A N/A

Performance target: Dashboard should fully render (all tiles loaded) within 2 seconds on a standard connection. Skeleton loading state (Section 1.7) appears within 200ms.

Partial failure handling: Each tile fetches data independently. A failure in one tile (e.g., Stripe timeout for Failed Payments) does not block other tiles from loading. See Partial failure state in Section 1.7.

1.10 Accessibility and Responsiveness

Accessibility:

Responsiveness:

1.11 Empty State

When the dashboard has no active semester and all alert tiles would be hidden:


2. Cross-References

Reference Document Section
Alert Tile component pattern 01-global-patterns.md Section 4.4
Metric Card component pattern 01-global-patterns.md Section 4.5
Loading state pattern 01-global-patterns.md Section 4.9
Role-based access matrix 01-global-patterns.md Section 3.2
Global search 01-global-patterns.md Section 2
Stripe data fetching strategies 01-global-patterns.md Section 5.1
Failed Payments alert section (click target) 08-billing-payments.md Section 2.5
Payment Overview screen 08-billing-payments.md Section 2
Semester Hub (click target for phase prompt) 04-semester-management.md TBD
Setup Checklist (data source for setup phase) 04-semester-management.md TBD
Close Workflow (data source for close phase) 04-semester-management.md TBD
Issue Queue (click target for App Issues tile) 10-admin-system.md TBD
TA Detail Page > Performance tab (click target) 07-teacher-management.md TBD
Student Report filtered view (click target) 09-reporting.md TBD
WF4 Daily Monitoring workflow 00-spec-index.md Section 6, WF4