v2 Admin Spec — Index & Foundations
QuranFlow Admin Backend Redesign -- Specification Index (v2)
1. Purpose and Scope
This spec covers the complete redesign of the QuranFlow admin backend navigation and screen structure. v2 is the current spec — it extends the v1 Enhanced Candidate A architecture with the 11 decisions captured in the Apr 15, 2026 stakeholder review (see ../v2-review/FRAMEWORK-V2.md). The spec is mockup-ready: detailed enough for a designer to create wireframes without asking clarifying questions.
v1 is preserved in ../admin-spec/ as a reference baseline. v1 cross-references remain valid for any NOT-ADDRESSED section; v2 updates are documented inline with ADR references and HTML comments.
Covers: Admin backend navigation, all screen specifications, billing integration, role-based access, and the new Communication domain.
Does not cover: Student-facing iOS app, checkout frontend, Stripe API implementation details, mobile responsive design.
2. Design Foundations
The Enhanced Candidate A architecture was selected through a structured multi-candidate evaluation in Workstream 1, scoring 30/35 (highest of 3 candidates). It was then augmented with the strongest ideas from Candidates B and C. The Apr 15, 2026 stakeholder review extended the architecture with five Accepted Decision Records (ADR-001 through ADR-005) documented in ../v2-review/decisions/.
Core (from Candidate A -- scored 30/35, highest of 3 candidates)
- 9+1 domain sidebar matching the admin's mental model: Student Management, Semester Management, Content, Scheduling, Teacher Management, Billing & Payments, Reporting, Admin & System, Communication (NEW v2) + Dashboard
- Rich multi-tab entity pages for Students (7 tabs, Admin Notes added in v2), Semesters (5 tabs — End Checklist and Onboarding Support added per ADR-001 / Framework v2 §3.2), TAs (4 tabs)
- Billing as first-class dual-level domain -- aggregate domain-level views (Payment Overview, Payment Plans, Coupons, Family Plans, Scholarships & Deferments) plus entity-page-level tabs (Student Detail > Payments tab, Semester Hub > End Checklist billing item).
- Role-based sidebar filtering for TAs (see only their students, schedule, submissions) and view-only admins (full visibility, no write actions)
Incorporated from Candidate B (dashboard depth)
- Enhanced operational dashboard with configurable alert tiles (failed payments, pending submissions, TA response times)
- Issue Queue for student-to-admin communication, surfaced as a dedicated screen under Admin & System
- Phase-aware dashboard tiles with semester lifecycle prompts (Setup / Active / Close) and progress indicators.
Incorporated from Candidate C (search + content integration)
- Global search bar resolving to entity pages from any screen
- Deeper content status integration on Semester Hub -- inline previews of content readiness, deep links to Content screens with the semester pre-filtered, and a "return to checklist" affordance
v2 Deviations from v1 Core Patterns
- 9-domain IA vs. 8-domain v1 IA: Communication becomes the 9th domain, absorbing Email Management from Semester Management and Notifications from Admin & System, and adding four net-new screens. See ADR-003.
- Flat End Checklist (v2) vs. v1 gated end-of-semester workflow: Semester Hub's end-of-semester tab is a flat End Checklist structurally parallel to Setup Checklist. Automation moves to backend triggers. See ADR-001.
- Hybrid matrix Assignment Criteria vs. v1 rules engine: Per-TA matrix (capacity, level specialization, new-vs-returning) + small named rules + read-only preview. Timezone proximity rule dropped. See ADR-002.
- Registration Tracker dissolved: The proposed Registration Tracker screen is served by a "Registration" filter preset on Semester Hub > Enrollment plus co-located Level 0 bulk-promote. See ADR-005.
- No identity switching: "Send as TA" was rejected. Admins pre-draft; TAs send from their own accounts. See ADR-004.
Evidence base
- Interview: The admin proposed a domain-based structure herself (Q4: "I would group things by what they're about -- students, content, scheduling")
- WS1.5 scoring: Enhanced Candidate A scored highest on mental model match (5/5), billing accommodation (5/5), and secondary user learnability (5/5)
- Sensitivity analysis: Robust under all tested weighting scenarios
- Apr 15, 2026 stakeholder review: All 11 decisions captured in FRAMEWORK-V2.md; 5 ADRs accepted
3. Master Navigation Tree
Dashboard (operational overview with alerts and phase prompts)
Student Management
Students
[Student Detail Page] (multi-tab profile)
[Tab: Profile]
[Tab: Submissions]
[Tab: Payments]
[Tab: Appointments]
[Tab: Semester History]
[Tab: Admin Notes] (NEW v2 — see 03-student-management.md §3.9.5)
[Tab: Actions]
Submissions (Assessments)
Promoted Students
Failed Sign Ups
Semester Management
Semesters
[Semester Hub Page] (multi-tab semester view)
[Tab: Overview]
[Tab: Setup Checklist]
[Tab: Enrollment] <!-- v2: gains "Registration" filter preset + co-located Level 0 bulk-promote per ADR-005 -->
[Tab: End Checklist] (RENAMED v2) <!-- v2: replaces Close Workflow per ADR-001 -->
[Tab: Onboarding Support] (NEW v2) <!-- v2: see Framework v2 §3.2 -->
Welcome Package
Tags
Operations (bulk actions) <!-- v2: 4 cards, down from 5 — Level 0 promote moved to Enrollment tab per ADR-005 -->
<!-- v2: Email Management removed from this domain per ADR-003 -->
Content
Video Lessons
Resources
Recordings
Tutorials
MCQ Questions
Quizzes
Scheduling
Calendar View
Live Sessions
Upcoming Appointments
TA Schedules
Holidays
One-to-One Appointment Usability (NEW v2) <!-- v2: see Framework v2 §3.4 and 06-scheduling.md §7 -->
Teacher Management
Teaching Assistants
[TA Detail Page] (multi-tab TA view)
[Tab: Profile]
[Tab: Schedule]
[Tab: Students & Groups]
[Tab: Performance]
Teacher Assignment Criteria <!-- v2: rewritten as hybrid matrix per ADR-002 -->
TA Reports
Student Groups
Billing & Payments
Payment Overview
Payments (transaction history)
Payment Plans <!-- v2: grouped presentation (Standard / Family / Scholarships / Discounts) per Decision #8 -->
Coupons
Family Plans
Scholarships & Deferments
Reporting
Student Report
Referrals
Specific Reports
Student Composition
Active Semester Enrollment <!-- v2 NEW per Apr 22 -->
Revenue Breakdown <!-- v2 NEW per Apr 22 -->
Installment→One-Time Conversion <!-- v2 nice-to-have stub per Apr 22 -->
Notification/Email Impact <!-- v2 nice-to-have stub per Apr 22 -->
Logs
Admin & System
Admins
Settings (General)
Support Links
Issue Queue
<!-- v2: Notifications removed from this domain per ADR-003 — redirect preserved in 10-admin-system.md §4 for cross-ref traceability -->
Communication (NEW DOMAIN — v2) <!-- v2: 9th top-level domain per ADR-003 -->
Automation Emails <!-- absorbed from Semester Management > Email Management, enhanced with Sequence View -->
Blast Emails (NEW v2)
Push Notifications <!-- absorbed from Admin & System > Notifications, enhanced with recipient filtering -->
Announcement Board (NEW v2)
Private Messages (NEW v2)
Communication Logs (NEW v2)
Screen counts (v2): 9 top-level domains + Dashboard, 39 screens total.
- v1 total: 35 screens across 8+1 domains
- Removed from v1 IA: Email Management (-1, absorbed), Notifications (-1, absorbed); Dissolved grab-bag Students Management (already removed in v1 reshuffle)
- Added in v2: Communication domain (6 screens: Automation Emails counts as absorbed not new; Blast Emails, Announcement Board, Private Messages, Communication Logs = 4 net-new; Push Notifications absorbed). Net-new from Communication: +4.
- Added in v2 under Scheduling: One-to-One Appointment Usability = +1
- Added in v2 as tabs (not sidebar items, not counted as screens): Admin Notes tab, Onboarding Support tab
- Net change v1→v2: +4 screens (35 → 39). Math: 35 − 1 (Email Management moved) − 1 (Notifications moved) + 2 (same two relocated into Communication as absorbed screens) + 4 (Communication net-new) + 1 (One-to-One Usability) = 40. Subtract 1 for the net effect of Operations losing Level 0 promote card (no screen removed; only card count in §7) → 39 screens.
4. Screen Placement Map
Complete mapping of all v1 screens to their v2 locations, plus v2 additions. Where a screen is unchanged from v1, the "Change Type" column lists the v1 status (MOVED/ENHANCED/MERGED/REBUILT); v2 changes are flagged separately.
| # | Current Location (pre-redesign) | Screen | v2 Location | Change Type |
|---|---|---|---|---|
| 1 | Top-level | Dashboard | Dashboard | REBUILT (v1) |
| 2 | Top-level | Semesters | Semester Management > Semesters | ENHANCED (Hub Page, 5 tabs in v2) |
| 3 | Program | Video Lessons | Content > Video Lessons | MOVED |
| 4 | Program | Submissions | Student Management > Submissions | MOVED |
| 5 | Program | Resources | Content > Resources | MOVED |
| 6 | Program | Live Sessions | Scheduling > Live Sessions | MOVED |
| 7 | Program | Recordings | Content > Recordings | MOVED |
| 8 | Program | Tutorials | Content > Tutorials | MOVED |
| 9 | Program | MCQ Questions | Content > MCQ Questions | MOVED |
| 10 | Program | Quizzes | Content > Quizzes | MOVED |
| 11 | People | Students | Student Management > Students | ENHANCED (Detail Page — 7 tabs in v2) |
| 12 | People | Teaching Assistants | Teacher Management > Teaching Assistants | ENHANCED (Detail Page) |
| 13 | People | Admins | Admin & System > Admins | MOVED |
| 14 | People | Students Management | DISSOLVED (v1) | Tools redistributed |
| 15 | Reports | Student Report | Reporting > Student Report | MOVED |
| 16 | Reports | TA Reports | Teacher Management > TA Reports | MOVED |
| 17 | Reports | Payments | Billing & Payments > Payments | MOVED |
| 18 | Reports | Promoted Students | Student Management > Promoted Students | MOVED |
| 19 | Reports | Failed Sign Ups | Student Management > Failed Sign Ups | MOVED |
| 20 | Reports | Referrals | Reporting > Referrals | MOVED |
| 21 | Reports | Specific Reports | Reporting > Specific Reports | MOVED |
| 22 | Appointments | Upcoming Appointments | Scheduling > Upcoming Appointments | MOVED |
| 23 | Appointments | TA Schedules | Scheduling > TA Schedules | MOVED |
| 24 | Appointments | Holidays | Scheduling > Holidays | MERGED (+ Live Session Holidays) |
| 25 | Settings | Notifications | Communication > Push Notifications | MOVED + ABSORBED (v2) |
| 26 | Settings | Tags | Semester Management > Tags | MOVED |
| 27 | Settings | Payment Plans | Billing & Payments > Payment Plans | MOVED |
| 28 | Settings | Coupons | Billing & Payments > Coupons | MOVED |
| 29 | Settings | Settings (General) | Admin & System > Settings | MOVED |
| 30 | Settings | Operations | Semester Management > Operations | MOVED |
| 31 | Settings | Email Management | Communication > Automation Emails | MOVED + ABSORBED (v2) |
| 32 | Settings | Welcome Package | Semester Management > Welcome Package | MOVED |
| 33 | Settings | Teacher Assignment Criteria | Teacher Management > Teacher Assignment Criteria | MOVED + REWRITTEN |
| 34 | Settings | Logs | Reporting > Logs | MOVED |
| 35 | Students Mgmt | Support Links | Admin & System > Support Links | MOVED |
| v2 net-new screens | ||||
| 36 | — | Blast Emails | Communication > Blast Emails | NEW (v2) |
| 37 | — | Announcement Board | Communication > Announcement Board | NEW (v2) |
| 38 | — | Private Messages | Communication > Private Messages | NEW (v2) |
| 39 | — | Communication Logs | Communication > Communication Logs | NEW (v2) |
| 40 | — | One-to-One Appointment Usability | Scheduling > One-to-One Appointment Usability | NEW (v2) |
Total v2 screens: 39 (rows 1–13 and 15–40; #14 dissolved).
Dissolved Screen #14 Redistribution (v1)
The former Students Management screen's contents were redistributed in v1:
- Level 0 promotion → Semester Management > Operations (v1). v2 update: Level 0 promote is further co-located onto Semester Hub > Enrollment tab per ADR-005; Operations retains the action for now but the primary entry point is Enrollment.
- Live Session Holidays → Scheduling > Holidays
- Support Links → Admin & System > Support Links
5. New Screens Inventory
Preserved from v1 (unchanged entries)
| Screen | Domain | Type | Purpose |
|---|---|---|---|
| Dashboard | Top-level | Full rebuild | Operational alerts, phase prompts, quick actions. |
| Student Detail Page | Student Management | Multi-tab entity page | Consolidated student view. |
| Semester Hub Page | Semester Management | Multi-tab entity page | Consolidated semester view. |
| TA Detail Page | Teacher Management | Multi-tab entity page | 4 tabs (Profile, Schedule, Students & Groups, Performance). |
| Calendar View | Scheduling | New screen | Unified visual calendar across live sessions and 1:1 appointments. |
| Payment Overview | Billing & Payments | New screen | Aggregate billing health dashboard. |
| Family Plans | Billing & Payments | New screen | Family group billing management. |
| Scholarships & Deferments | Billing & Payments | New screen | Special billing arrangement management. |
| Student Composition | Reporting | New screen | Student body breakdown report. |
| Student Groups | Teacher Management | Surfaced to nav | Groups list previously only accessible through individual TA pages. |
| Issue Queue | Admin & System | New screen | Student-reported issues and admin-to-admin tickets. |
Modified in v2
| Screen | Domain | Type | v2 Purpose |
|---|---|---|---|
| End Checklist (tab on Semester Hub) | Semester Management | Modified in v2 | Flat end-of-semester checklist structurally parallel to Setup Checklist. Canonical 5 steps: All Submissions Reviewed, Pass/Fail, Send Pass/Fail Emails, Set Up Automatic Payments, Semester Close. Mix of automatic (backend-triggered) + semi-automatic + fully-manual fallbacks. Supports custom items. No gated steps. See docs/v2-review/STAKEHOLDER-ANSWERS-2026-04-21.md §1. |
NEW in v2
| Screen | Domain | Type | Purpose |
|---|---|---|---|
| Onboarding Support (tab on Semester Hub) | Semester Management | NEW v2 tab | Groups student-facing onboarding affordances: Telegram/WhatsApp group links with student-access scoping, welcome videos for home screen, countdown timer to next semester start. |
| Admin Notes (tab on Student Detail) | Student Management | NEW v2 tab | Private admin notes on a student. Not visible to the student or TA. Supports append-only timestamped entries for audit. |
| One-to-One Appointment Usability | Scheduling | NEW v2 screen | Usability dashboard showing gender-split slot fill rates, week-by-week underutilized slots, remove-slot action. Drilldown to Calendar View. |
| Blast Emails | Communication | NEW v2 screen | Compose and send one-off emails to a filtered/manual recipient list. Template library, recipient filtering, scheduling, pre-draft for TA. Net-new capability — stakeholder quote: "we don't currently have that as an option at all." |
| Announcement Board | Communication | NEW v2 screen | One-way admin→users in-app announcements. Replaces the community board concept. Audience filtering, expiry, optional read receipts. |
| Private Messages | Communication | NEW v2 screen | Bidirectional student↔teacher/admin inbox. Thread-based conversational messaging. Core screen for the pre-draft pattern (ADR-004). |
| Communication Logs | Communication | NEW v2 screen | Unified audit trail across all five outbound channels (automation email, blast email, push, announcement, private message). Distinct from Reporting > Logs. |
6. Cross-Domain Workflow Index
These are the core admin workflows mapped to their screen sequences. Workflow improvement metrics measured against the v1 baseline; v2 deltas noted where applicable.
WF1: Semester Setup (2-3x/year, Critical)
Current state: 19+ screens, 50-80 clicks, 3 external tools (Google Sheets, Vimeo, manual checklists) v2: 8-10 screens, 20-35 clicks, 1 external tool (Vimeo for video URLs)
Screen sequence (v2):
- Dashboard — phase prompt shows "Semester Setup" with progress bar
- Semester Management > Semesters — create new semester or clone from previous (v2: auto-clone on create; manual Clone-from-Previous retained)
- Semester Hub > Setup Checklist tab — guided checklist with completion status
- Content > Video Lessons — deep link from checklist, semester pre-filtered
- Click "return to checklist" → Semester Hub > Setup Checklist tab
- Content > Resources — deep link, semester pre-filtered
- Click "return to checklist" → Semester Hub > Setup Checklist tab
- Semester Hub > Enrollment tab — review counts, assign students; v2 adds "Registration" filter preset + Level 0 bulk-promote here per ADR-005
- Teacher Management > Teaching Assistants — assign TAs; v2: configure via hybrid matrix on Teacher Assignment Criteria per ADR-002
- Semester Management > Welcome Package — configure welcome email content
- Communication > Automation Emails (filtered to this semester via Setup Checklist deep link) — schedule enrollment confirmation and lifecycle emails
- Semester Hub > Onboarding Support tab (NEW v2) — configure Telegram/WhatsApp links, welcome videos, countdown timer
WF2: Student Support (frequent, ad-hoc)
Current state: 5-7 screens, 15-25 clicks, 3 external tools (Stripe dashboard, Google Sheets, WhatsApp) v2: 1-2 screens, 4-7 clicks, 0 external tools
Screen sequence (v2):
- Global Search — type student name from any screen
- Student Management > Students > [Student Detail Page] — direct landing
- All information available via tabs:
- Profile tab: contact info, enrollment status, level, TA assignment
- Submissions tab: audio submissions with grades and feedback (v2: reject-under-review action; bulk delete; per-week exception UI)
- Payments tab: Stripe subscription status, payment history, failed payments (inline, no Stripe dashboard needed)
- Appointments tab: upcoming and past 1:1 sessions (v2: semester filter)
- Semester History tab: progression across semesters
- Admin Notes tab (NEW v2): private admin-only notes
- Actions tab: lifecycle actions including v2 "Enroll in Mastery Course"
- If conversational follow-up needed → Communication > Private Messages (cross-domain deep link from Profile tab "Message" action)
WF3: Semester End (2-3x/year, Critical)
Current state (v1 baseline): 8+ screens, 40-70 clicks, 3 external tools (Google Sheets, Stripe dashboard, manual tracking)
v2 target: flat 5-step End Checklist with automatic + semi-automatic steps plus optional custom items. Screen and click counts are TBD — see §10 for measurement caveat; expected similar to or better than v1 given automation.
Screen sequence (v2):
- Dashboard — phase prompt shows "Semester End" with End Checklist progress (e.g., "3 of 5 steps complete").
- Semester Management > Semesters > [Semester Hub > End Checklist tab] — flat list of the 5 canonical steps plus any custom items; each row shows status and an "Open" link to the step's detail view. See
04-semester-management.md §3.8for the full definition. - Step-level work — each step either auto-completes via backend trigger or surfaces a manual fallback view when clicked:
- Step 1 — All Submissions Reviewed auto-completes after the submission close date when no pending submissions remain; "Open" deep-links to Submissions (03-student §3) filtered to pending.
- Step 2 — Pass/Fail auto-completes when all Level 1–4 students have
final_statusassigned (Mastery auto-passed at Step 5). "Open" deep-links to Students list (03-student §2) filtered to L1–4 without status; TAs can set status for their own students, admins for any. - Step 3 — Send Pass/Fail Emails auto-completes when every student has been sent the appropriate template (pass / fail-with-opt-in / mastery-elective). "Open" surfaces unsent students with a per-student "Send Now" fallback (templates live in 11-communication §2 Automation Emails).
- Step 4 — Set Up Automatic Payments auto-completes when all passing L1–4 students have Stripe next-semester subscriptions created. "Open" deep-links to the End Checklist Payment Setup Queue (08-billing §2.9) with per-student manual setup buttons; Mastery and failing students are excluded by scope.
- Step 5 — Semester Close fires fully automatically at midnight EST on
semester.end_date; no admin action.
- Cross-domain jumps as needed (driven by deep links from the steps above):
- Students with pending submissions → 03-student §3 Submissions
- L1–4 students awaiting Pass/Fail → 03-student §2 Students list
- Unsent end-of-semester emails → 03-student §2 Students list (filtered by email status) via 11-communication
- Passing students needing payment setup → 08-billing §2.9 End Checklist Payment Setup Queue
- Student departures → Student Detail > Actions tab (linked deactivation preserved; leavers need no checklist step per STAKEHOLDER-ANSWERS-2026-04-21)
- End-of-semester announcements → optionally 11-communication > Announcement Board
What's different from v1:
- No gated sequence — the 5 steps complete independently as their trigger conditions are met.
- W4 risk (payment setup before promotion finalized) is mitigated by scope rather than a UI gate: Step 4's scope is "L1–L4 passing students only", so it depends on Step 2 setting
final_statusbefore any student becomes eligible. - Leavers are no longer a checklist item (they stay inactive; no admin action required).
- Mastery students are handled on a distinct track (auto-pass at Step 5, elective-prompt email in Step 3, self-enroll rather than auto payment setup).
WF4: Daily Monitoring (every session)
Current state: 4-5 screens, 12-18 clicks, 3 external tools (Stripe dashboard, Google Sheets, email) v2: 1-3 screens, 3-8 clicks, 0 external tools
Screen sequence (v2):
Path A — Failed payments:
- Dashboard — alert tile "3 Failed Payments"
- Billing & Payments > Payment Overview — filtered to failed
- Student Detail > Payments tab — full history, retry or contact
Path B — TA performance:
- Dashboard — alert tile "2 TAs: Response Time > 48h"
- Teacher Management > Teaching Assistants — filtered
- TA Detail > Performance tab — response time trends, submission backlog (v2: avg-grade-given metric added)
Path C — Communication monitoring (NEW v2):
- Dashboard — communication tiles: "Unread Private Messages (5)" or "Scheduled Blast: sending in 2h"
- Click tile → Communication > Private Messages (filtered to Unread) or Communication > Blast Emails (scheduled queue)
- Triage or reschedule as needed
Path D — App issues:
- Dashboard — "App Issues" tile
- Admin & System > Issue Queue — triage new issues
- Optional follow-up → Communication > Private Messages (cross-domain via Issue Detail "Start Message" action — boundary preserved per ADR-003 §1.1)
WF5: Scheduling / Appointments (regular)
Current state: 4-6 screens, 12-20 clicks, 2 external tools v2: 1-2 screens, 5-8 clicks, 0 external tools (plus optional usability review via new One-to-One Usability screen)
Screen sequence (v2):
Path A — Calendar management:
- Scheduling > Calendar View — unified view; v2 adds cancel-session, mark-inactive, reassign actions
- Filter by TA, gender, or level
- Click to create/edit directly
Path B — TA availability:
- Scheduling > TA Schedules — date-bound slots (v2), bulk-add (v2)
Path C — Usability review (NEW v2):
- Scheduling > One-to-One Appointment Usability — gender-split fill rates, underutilized slots
- Drill down → Calendar View filtered to the underutilized slots
- Remove-slot action directly from usability dashboard
WF6: TA Onboarding (per-semester)
Current state: 6-8 screens, 20-35 clicks, 1 external tool (Google Sheets) v2: 2-3 screens, 8-12 clicks, 0 external tools
Screen sequence (v2):
- Teacher Management > Teaching Assistants — "Add TA"; v2 filter adds semester scope + per-week session/slot metrics
- TA Detail > Profile tab — personal info, credentials, role permissions
- TA Detail > Schedule tab — weekly availability (v2: date-bound slots + bulk-add)
- TA Detail > Students & Groups tab — assign students/groups
- Teacher Management > Teacher Assignment Criteria (v2: hybrid matrix) — set capacity, level specialization, new-vs-returning routing for the new TA; review weighted-distribution preview
WF7: Outbound Communication (NEW v2)
Current state: No dedicated workflow — blast email required mail merge outside the system; push notifications had no recipient filtering; 1:1 messaging happened in WhatsApp/email. v2: Dedicated Communication domain consolidates all outbound messaging.
Screen sequence — Blast Email (typical):
- Dashboard — "Send Blast Email" quick action, or direct sidebar entry
- Communication > Blast Emails > Compose view — recipient filter or manual selection; compose message
- Preview modal → Test Send to self → Schedule or Send Now
- Optional: Draft for TA — select TA; draft goes to TA's outbox; TA sends from own account (production flow per ADR-004)
- Communication > Communication Logs — verify delivery status, retry failures if any
Screen sequence — Pre-drafted 1:1 Message (ADR-004 flow):
- Admin composes on Communication > Private Messages > New Message or from Student Detail > Profile > "Message" or Teacher Detail > "Pre-draft for [TA]"
- Select TA as sender identity → save draft
- TA reviews in their own account (production-only queue), edits if desired, sends
- Thread visible to student as originating from their TA; reply-to correctly routes to TA
7. Open Questions (with Best-Guess Defaults)
These questions remain unanswered from stakeholder interviews, workstream analysis, and the Apr 15 review. Each has a documented assumption sufficient for mockup creation; all require validation before production.
Preserved from v1
| # | Question | Source | Assumption | Affects |
|---|---|---|---|---|
| OQ1 | How many family plans per semester? | WS2 | 10-20 families (~5% of students). Build full CRUD. | Family Plans screen complexity |
| OQ2 | How many scholarship students and distinct levels? | WS2 | 15-30 students, 3 tiers (Full, 50%, 25%). | Scholarship management scope |
| OQ3 | How many deferment students and typical period? | WS2 | 5-10 per semester, 1-semester typical. Use Stripe pause_collection. | Deferment feature depth |
| OQ4 | Is FE database or QuranFlow subscriptions table canonical? | WS2 | QuranFlow subscriptions table as canonical. |
Billing data source queries |
| OQ5 | Content cloning: linked or independent copies? | WS1.5 | Independent copies. | Setup Checklist clone feature |
| OQ6 | What Stripe account is used? | WS2 | Single Stripe account (fe-checkout). | API key configuration |
| OQ7 | Should semester-end billing use Subscription Schedules? | WS2 | Immediate creation with ability to backdate. | End Checklist automatic billing item |
| OQ8 | Google Play IAP subscription volume? | WS2 | <5%. Show IAP as read-only note on Payments tab. | Payments tab scope |
| OQ9 | Support staff Stripe dashboard access? | Interview | Support staff do NOT have Stripe access. | Role-based access design |
v2 additions — ADR-001 (End Checklist)
All ADR-001 questions (OQ-E1 through OQ-E5) are resolved 2026-04-21 per
docs/v2-review/STAKEHOLDER-ANSWERS-2026-04-21.md§1. See that document for the canonical 5-step End Checklist definition (All Submissions Reviewed, Pass/Fail, Send Pass/Fail Emails, Set Up Automatic Payments, Semester Close). The resolved statuses below cite Lejla's verbatim definitions.
| # | Question | Assumption | Affects |
|---|---|---|---|
| OQ-E1 | What are the default End Checklist items? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §1 — Lejla's canonical 5-step End Checklist replaces the TBD scaffold: Step 1 All Submissions Reviewed, Step 2 Pass/Fail, Step 3 Send Pass/Fail Emails, Step 4 Set Up Automatic Payments, Step 5 Semester Close. | End Checklist content; WF3 metric validity |
| OQ-E2 | Per item: what constitutes "complete"? Which are fully automatic vs. semi-automatic (admin reviews + confirms)? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §1 — Step 1 automatic (submission close date + zero pending); Step 2 semi-automatic (TAs/admins set final_status per student); Step 3 automatic send + manual per-student fallback; Step 4 automatic + manual per-student fallback; Step 5 fully automatic at midnight EST on semester.end_date. |
Status computation; backend trigger spec |
| OQ-E3 | What is the trigger/deadline for each automatic step? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §1 — Step 1 triggers when submission close date passes AND zero pending submissions remain; Step 2 completes when 100% of L1–L4 students have final_status; Step 3 completes when all students sent appropriate email; Step 4 completes when all eligible passing L1–L4 students have payment_setup_status='created'; Step 5 fires at midnight EST on semester.end_date. |
Backend cron/triggers |
| OQ-E4 | Does the End Checklist support custom items (like Setup Checklist does)? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §1 — Yes; custom items section at bottom of checklist mirrors Setup Checklist UX. | §3.8 feature parity with Setup Checklist |
| OQ-E5 | How is the W4 risk (payment before promotion) handled if backend automation is delayed at launch? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §1 — Mitigated by Step 4's scope definition: "L1–L4 passing students only" (final_status = 'pass'). Ordering is enforced by scope (Step 4 depends on Step 2's output) rather than by UI gating. Mastery students excluded from Step 4 (self-enroll); failing students excluded (opt-in via Step 3 email link). |
Production-readiness gating |
v2 additions — ADR-002 (Assignment Criteria)
All ADR-002 questions (OQ-A1, OQ-A2, OQ-A3) are resolved 2026-04-21 per
docs/v2-review/STAKEHOLDER-ANSWERS-2026-04-21.md§2 (defaults #2, #3 + Q8) — deterministic distribution, manual fallback queue, Semester Hub entry point confirmed sufficient.
| # | Question | Assumption | Affects |
|---|---|---|---|
| OQ-A1 | Weighted distribution: deterministic from capacity or admin-adjustable weights? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §2 — Deterministic from TA capacity confirmed. | Algorithm spec |
| OQ-A2 | Conflict resolution when no TA matches all constraints? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §2 — Manual placement queue as fallback confirmed. | Unassignable student handling |
| OQ-A3 | Semester binding: Semester Hub entry point sufficient, or explicit selector needed? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS §2 — Semester Hub entry point provides sufficient semester context (no explicit semester selector on Assignment Criteria screen). | Screen header UI |
v2 additions — ADR-003 (Communication domain)
| # | Question | Assumption | Affects |
|---|---|---|---|
| OQ-C1 | Sequence View data source: only searched student, or sample when none searched? | Searched student only. | Automation Emails §2.5 |
| OQ-C2 | Template library: unified across Automation + Blast, or separate? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #4) — Unified template library confirmed. Templates tagged by source_domain are reusable across Automation + Blast contexts. |
email_templates schema |
| OQ-C3 | Scheduling: send-now only, or future scheduling for Blast / Push / Announcements? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #5) — Mockup supports send-now + save-draft only. Scheduling deferred to production. Announcement Board continues to use expires_at for post expiry (distinct from scheduled publishing). |
Compose UI |
| OQ-C4 | Saved audiences: shared across admins or private per admin? | Shared. | Recipient filter §1.5 |
| OQ-C5 | Announcement read receipts: default on, opt-in per post, or unsupported? | Opt-in per post. | read_receipt_enabled flag |
| OQ-C6 | Announcement Board: can TAs post, or admin-only? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #6, CHANGED) — Admins AND TAs can post to Announcement Board. TAs manage their own posts (edit, delete, set audience, set expiry). Moderation of others' posts is admin-only. | Role visibility §5.9 |
| OQ-C7 | Private Messages: multi-party threads, or strictly 1:1? | 1:1. | Thread data model |
| OQ-C8 | Private Messages: attachment scope (file types, size, storage)? | UI affordance only in mockup; production TBD. | §6.5 composer |
| OQ-C9 | Private Messages: who can students initiate new threads with? | Assigned TA and admins only. | Routing rules |
| OQ-C10 | Communication Logs: TA sidebar visibility for self-audit? | Hidden from TA sidebar. | Role visibility §7.9 |
| OQ-C11 | Pre-draft expiry: expire or persist? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #10) — Pre-drafts persist indefinitely. No expiry in v2. | Draft lifecycle |
| OQ-C12 | Pre-draft multi-TA: one message broadcast to many TAs each personalizing? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #9) — Single TA per draft. Multi-TA batched pre-drafting is not in v2 scope. | Compose UX |
| OQ-C13 | Pre-draft channels: which support it? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #8) — Private Messages and Blast Emails support pre-drafting; Push Notifications and Announcement Board do not. | Per-screen UI |
| OQ-C14 | Automation Emails: dynamic fields at send time vs. frozen at template creation? | Dynamic per-send substitution. | Template variable semantics |
| OQ-C15 | Email sending infrastructure (Postmark/SendGrid/SES)? | Existing infrastructure; mockup does not simulate send. | Delivery-status granularity |
| OQ-C16 | Announcement expiry vs. delete: remain visible in archive or disappear? | Disappear from active view, remain in admin history. | App-side behavior |
v2 additions — ADR-004 (Pre-drafted messaging)
v2 additions — ADR-005 (Registration Tracker integration)
| # | Question | Assumption | Affects |
|---|---|---|---|
| OQ-R1 | Does "Registration" preset include returning students re-enrolling, or only first-time Level 0? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #11) — Both new + returning enrollees to the current semester, with a sub-filter toggle "New This Semester Only" that narrows to new Level 0 (first-time enrollees). | Filter definition |
| OQ-R2 | Does bulk-promote button appear only during a defined registration window, or year-round? | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (default #12) — Year-round whenever Level 0 students exist (visibility tied to Level filter = Level 0 OR sub-filter "New This Semester Only" being active). | Toolbar visibility logic |
v2 additions — Framework v2 TBDs (ambiguities carried forward from gap analyses)
| # | Question | Source | Assumption |
|---|---|---|---|
| OQ-F1 | "Resend Credentials" on Failed Sign-ups: temp password or login credentials? | Framework v2 §3.1 | Temp password with one-time link. |
| OQ-F2 | Appointment time display: student timezone or EST? | Framework v2 §3.1 | Admin-local (EST) by default. |
| OQ-F3 | Level 0 bulk-promote target: Level 1 (spec) or "level two" (ramblings)? | Framework v2 §3.1 | Resolved 2026-04-21 per STAKEHOLDER-ANSWERS-2026-04-21.md — Level 2 confirmed by stakeholder. Lejla: "Level 0 is a placeholder for students whose level hasn't been assessed yet, and our default has always been to place them at Level 2. The spec saying Level 1 is an error." |
| OQ-F4 | Submission Close Date field scope: per-semester / per-level / per-assessment? | Framework v2 §3.2 | Per-assessment (most granular). |
| OQ-F5 | "One-to-One Schedules" checklist item: distinct from TA Schedules or same? | Framework v2 §3.2 | Same — deep link to TA Schedules. |
| OQ-F6 | Telegram/WhatsApp access control model (role / level / per-student)? | Framework v2 §3.2 | Per-level with per-student override. |
| OQ-F7 | Welcome videos scope: tutorial vs. semester-specific? | Framework v2 §3.2 | Semester-specific with tutorial fallback. |
| OQ-F8 | Zoom integration UI scope (sync button, pending-review queue, manual override)? | Framework v2 §3.3 | All three — sync button, review queue, override. |
| OQ-F9 | "Needs replacement" flag computation: manual, automatic from TA break, or both? | Framework v2 §3.4 | Both — auto from break + manual toggle. |
| OQ-F10 | Calendar gender filter: TA gender or student gender? | Framework v2 §3.4 | Student gender for appointments; TA gender for live sessions. |
| OQ-F11 | Bulk-add UX pattern for live sessions / slots? | Framework v2 §3.4 | Modal with inline add rows. |
8. Glossary
| Term | Definition |
|---|---|
| Semester | An enrollment period (typically 16-17 weeks) containing content, student progress, and scheduling. |
| Enrollment | A record connecting a user to a semester at a specific level (table: user_link_level_tag). |
| Level | Student progression stage: Level 0 (Starter) → Level 1 → Level 2 → Level 3 → Level 4 → Year 2. |
| TA | Teaching Assistant — reviews student submissions, conducts 1:1 appointments. |
| EOC | End of Course — assessment determining promotion eligibility. |
| Passing threshold | 3.5 marks minimum to pass. |
| Linked deactivation | Combined action: deactivate student account + cancel Stripe subscription in one step. |
| Setup Checklist | Semester Hub tab tracking which content/config items have been set up for a new semester. Flat, non-gated. |
| End Checklist (v2) | Semester Hub tab tracking end-of-semester tasks as a flat, non-gated 5-step list structurally parallel to Setup Checklist. Canonical 5 steps: Step 1 All Submissions Reviewed, Step 2 Pass/Fail, Step 3 Send Pass/Fail Emails, Step 4 Set Up Automatic Payments, Step 5 Semester Close. Automatic items driven by backend triggers; manual items admin-completed. Supports custom items. See docs/v2-review/STAKEHOLDER-ANSWERS-2026-04-21.md §1 and 04-semester-management.md §3.8. |
| Phase prompt | Dashboard element showing current semester phase (Setup / Active / End) with progress indicator. |
| Entity page | Rich multi-tab detail page consolidating information about a student, semester, or TA into a single view. |
| Domain | Top-level navigation section organized around an area of responsibility (e.g., Student Management, Communication). |
| Family Plan | A billing arrangement where multiple students share a single Stripe subscription with a family discount. |
| Scholarship | A reduced-rate billing arrangement with defined tiers (Full, 50%, 25%). |
| Deferment | A temporary pause on billing via Stripe's pause_collection, typically one semester. |
| Issue Queue | Centralized screen for student-reported issues and admin tickets. Remains in Admin & System per ADR-003 §1.1. Not a messaging channel — see Private Messages. |
| Global search | Search bar resolving student/TA/semester names to entity pages from any screen. |
| Alert tile | Dashboard component surfacing an operational metric (e.g., failed payments count) with click-through. |
| Assignment Matrix (v2) | Per-TA configuration table on Teacher Assignment Criteria with columns for capacity, level specialization, new-vs-returning routing. Complemented by a small set of named rules (gender match, repeat-student auto-assign, distribution strategy) and a read-only preview of the weighted-distribution outcome. |
| Rules Engine (v1 term — superseded) | See Assignment Matrix. v1 used a generic prioritized rule catalog; v2 replaces it with a per-TA matrix + named rules per ADR-002. |
| Blast Email (v2) | Admin-initiated, multi-recipient, one-time email send. Distinct from Automation Emails (event-triggered, per-student). Supports recipient filtering, manual selection, scheduling, template library, and pre-draft for TA. |
| Announcement Board (v2) | In-app one-way admin→users channel for non-urgent program updates. Replaces the community board concept. Supports audience filtering, expiry, optional read receipts. |
| Private Message (v2) | Bidirectional thread-based message between a student and a teacher/admin. Replaces ad-hoc WhatsApp/email for student support. Admins can view all threads for moderation but cannot impersonate participants. |
| Pre-drafted Message (v2) | A message composed by an admin and assigned as a draft to a TA; the TA reviews in their own account and sends from their own identity. No impersonation, single sender identity. Available on Private Messages and Blast Emails. |
| Registration filter preset (v2) | Saved filter on Semester Hub > Enrollment showing all new + returning enrollees to the current semester (students with user_link_level_tag.created_at within the semester's registration window), sorted by enrollment date (newest first). An optional sub-filter toggle "New This Semester Only" narrows to new Level 0 first-time enrollees. Replaces the proposed standalone Registration Tracker screen. Co-located with Level 0 bulk-promote action (target: Level 2). |
| Onboarding Support tab (v2) | Semester Hub tab grouping student-facing onboarding affordances: Telegram/WhatsApp group links, welcome videos, countdown timer to next semester. |
| Admin Notes tab (v2) | Student Detail tab for private admin-only notes on a student. Not visible to student or TA. |
9. Document Index
| Document | Description |
|---|---|
00-spec-index.md |
This file. v2 hub document: purpose, design foundations, master nav tree, screen placement map, new-screens inventory, workflows, open questions, glossary, document index, workflow improvement summary. |
01-global-patterns.md |
Navigation shell, global search, role-based access, component patterns, Stripe data patterns, inline documentation. Sidebar definition expanded to 9 domains per ADR-003. |
02-dashboard.md |
Operational dashboard: alert tiles, phase prompts (End phase references End Checklist per ADR-001), quick actions (Send Notification retargeted to Communication per ADR-003; Send Blast Email + Post Announcement added). |
03-student-management.md |
Students list, Student Detail Page (7 tabs in v2 — Admin Notes added), Submissions, Promoted Students, Failed Sign Ups. Cross-ref note on Registration tracking via Semester Hub > Enrollment per ADR-005. |
04-semester-management.md |
Semesters list, Semester Hub Page (5 tabs: Overview, Setup Checklist, Enrollment, End Checklist, Onboarding Support), Welcome Package, Tags, Operations (4 cards, down from 5). Email Management removed (absorbed by Communication). §3.8 fully rewritten for End Checklist per ADR-001. |
05-content.md |
Video Lessons, Resources, Recordings, Tutorials, MCQ Questions, Quizzes. v2 refinements: multi-video, multi-level resource tagging, Zoom auto-upload affordances. |
06-scheduling.md |
Calendar View, Live Sessions, Upcoming Appointments, TA Schedules, Holidays, One-to-One Appointment Usability (NEW v2 §7). v2 refinements: teacher field, recurrence, bulk-add, cancellation templates, "Needs replacement" flag. |
07-teacher-management.md |
TA list + TA Detail Page (4 tabs), Teacher Assignment Criteria (rewritten as hybrid matrix per ADR-002), TA Reports, Student Groups. |
08-billing-payments.md |
Payment Overview, Payments, Payment Plans (grouped presentation per Decision #8), Coupons, Family Plans, Scholarships & Deferments. |
09-reporting.md |
Student Report, Referrals, Specific Reports, Student Composition, Active Semester Enrollment (NEW v2), Revenue Breakdown (NEW v2), Installment→One-Time Conversion (stub), Notification/Email Impact (stub), Logs. Apr 15 was Cat E — Deferred; Apr 22 session partially resolved — 2 primary reports added, 2 stubs noted. Full catalog still pending a reporting working session. CSV-only, live dashboards, no scheduled email. |
10-admin-system.md |
Admins, Settings (General), Notifications (redirect stub — moved to Communication per ADR-003), Support Links, Issue Queue. |
11-communication.md (NEW v2) |
9th domain. Automation Emails, Blast Emails (NEW), Push Notifications (absorbed + enhanced), Announcement Board (NEW), Private Messages (NEW), Communication Logs (NEW). Shared Recipient Filter (§1.5), pre-draft identity model (ADR-004). |
10. Workflow Improvement Summary
Quantified impact of the redesign across the core admin workflows.
| Workflow | Current (v1 baseline) | v2 target | Screen Reduction | Click Reduction | Ext Tools Eliminated |
|---|---|---|---|---|---|
| WF1: Semester Setup | 19+ screens, 3 ext tools | 8-10 screens, 1 ext tool | 47-58% | 56-75% | 67% |
| WF2: Student Support | 5-7 screens, 3 ext tools | 1-2 screens, 0 ext tools | 71-86% | 65-81% | 100% |
| WF3: Semester End | 8+ screens, 3 ext tools | TBD (was v1 Enhanced A: 4-6 screens, 0 ext tools) | TBD | TBD | 100% (still targeted — external tools remain eliminated regardless of checklist shape) |
| WF4: Daily Monitoring | 4-5 screens, 3 ext tools | 1-3 screens, 0 ext tools | 40-78% | 56-83% | 100% |
| WF5: Scheduling | 4-6 screens, 2 ext tools | 1-2 screens, 0 ext tools | 58-75% | 50-60% | 100% |
| WF6: TA Onboarding | 6-8 screens, 1 ext tool | 2-3 screens, 0 ext tools | 58-75% | 60-66% | 100% |
| WF7: Outbound Communication (NEW v2) | Per-channel external tools (mail merge, WhatsApp, email) — no unified capability | 1-3 screens, 0 ext tools | N/A (new capability) | N/A (new capability) | 100% (replaces WhatsApp, external mail merge) |
External tool reduction: 15+ dependencies → 1 (Vimeo for video URLs). Google Sheets eliminated. Stripe dashboard eliminated. External mail merge eliminated (new in v2 via Blast Emails). WhatsApp eliminated (new in v2 via Private Messages).
v2-specific workflow improvements beyond v1
- Communication unification (WF7): previously no unified outbound messaging — v2 consolidates five channels (automation email, blast email, push, announcement, private message) into one domain with a shared recipient filter, unified audit trail, and pre-draft pattern replacing identity switching.
- Registration Tracker integration (WF1): enrollment visibility during the registration window is now served by a filter preset + co-located Level 0 bulk-promote on Semester Hub > Enrollment, avoiding a separate screen and duplicated student-list logic per ADR-005.
- Assignment configuration clarity (WF6): the hybrid matrix per ADR-002 aligns the configuration surface with how the stakeholder actually configures assignments (per-TA constraints) rather than abstract rules, reducing cognitive overhead during TA onboarding.
- Onboarding affordances (WF1): the new Onboarding Support tab groups student-facing onboarding tools (group links, videos, countdown) that previously required cross-domain navigation or did not exist.