Phase 4 — Architecture Specification

Phase 4 -- Architecture Specification

Version: 1.3 (updated with Learn screen amendments and Schedule screen amendments from implementation findings) Date: February 26, 2026 Input: Phase 1 Problem Brief + Phase 2 Design Principles + Phase 3 Learnings + All Source Files Organizing Principle: Weekly Rhythm -- "The app follows my weekly learning cycle."


4.1 Concept & Philosophy

The Mental Model: "My Weekly Planner"

The student opens QuranFlow and sees a planner organized around the current week of their 15-week semester. The app knows what week it is, what the student has done, and what remains. It presents this information the way a well-organized planner would: the current week is front and center, the weekly tasks are listed with their status, and the upcoming schedule is visible at a glance. The student does not browse. The student does not explore. The student opens the app, sees where they are, and picks up where they left off.

This is not a content library where learners choose what to study. It is not a social platform where learners interact with a community. It is a structured 15-week program with a fixed weekly cadence, and the app reflects that structure directly. The organizing principle is temporal: the week is the unit of work, the semester is the arc, and the student's position within both is always visible.

Why This Fits QuranFlow's Users

QuranFlow's students are busy adults, many older, many balancing families and jobs. The PM captured it precisely: "Not everybody is an exploration type... they just want a plug and play experience. What do I need to do? Just let me know, I'll do it. Don't make me think about the process." These users do not read onboarding emails. They do not explore menus. They open the app expecting it to tell them what matters right now.

A weekly-rhythm architecture serves this user because it eliminates decision-making. The student does not choose what to study -- the week determines it. The student does not figure out what to submit -- the current week's assignment is surfaced. The student does not hunt for their schedule -- it appears in temporal context. The app makes one promise: open it any day during the semester, and you will know exactly where you stand and what to do next.

How It Solves the Disorientation Problem

The Phase 1 problem brief identifies disorientation as the core failure: students cannot answer "What week am I on?", "What should I be doing?", or "When does the next thing happen?" The weekly-rhythm architecture solves this by making all three answers visible on the home screen at all times. The week number is the dominant visual element. The student's task status (lesson watched, submission done, feedback received) is shown as a checklist. The next scheduled event is displayed with a countdown. No inference, no calculation, no digging.

Position on the Guidance-Flexibility Spectrum

This architecture sits at approximately 70% guidance, 30% flexibility. The home screen is fully guided -- it tells the student what to do. The Learn tab offers moderate flexibility -- the student can browse all weeks, not just the current one. The Schedule tab offers full flexibility -- the student can view any week's sessions and recordings. The Profile tab is purely informational. The architecture is opinionated about what matters now but permissive about what the student can access.

How It Incorporates the Strongest Ideas

From the Dashboard approach (Proposal B): The three-card status triptych on the home screen -- Lesson, Submission, Feedback -- each showing a compact state with a single action. This gives the returning student instant status without scrolling.

From the Guided Journey approach (Proposal C): The context-dependent primary action that changes based on the student's state within the weekly cycle. The state machine (lesson not started, lesson in progress, submission due, awaiting feedback, feedback ready, all caught up) drives what the home screen emphasizes. Also adopted: the journey visualization as a progress map, and the structured multi-step onboarding sequence.

From the Weekly Rhythm approach (Proposal A): The week-as-unit grouping, the temporal header, the semester progress bar, the co-location of lesson, submission, and feedback within each week, and the schedule as a first-class tab.


4.2 Navigation Structure

Tab Bar Design

Tab Icon Suggestion Label Contains Why Tab-Worthy
1 house.fill Today Current week dashboard, status cards, next session, primary CTA The home screen. Visited on every app launch. Answers the 3 Questions.
2 book.fill Learn Weekly learning workspace (lesson + submission + feedback sections), journey progress indicator in "All Weeks" view The learning content destination. Visited at least weekly to watch lessons and review past weeks. Coherent information space: the student's full learning record.
3 calendar Schedule Weekly calendar, session cards, session recordings, deadline display The schedule was hidden 5 clicks deep. It is used weekly. It is a coherent information space (time-based). The mockup proved it works excellently as a standalone tab.
4 person.crop.circle Profile Coach info, account settings, font settings, support, resources, stats Houses all identity, settings, and support features. Visited at least weekly (to check coach, access help). Eliminates the hamburger menu entirely.

Tab bar justification against the Tab Worthiness Test:

Tab 1 -- Today: A destination (the student's weekly dashboard). Used on every launch. Its absence would leave the student without orientation. It is a coherent space: the current week's status.

Tab 2 -- Learn: A destination (the student's weekly learning workspace). Used at least weekly to watch lessons, submit recordings, and review feedback. Its absence would leave the student unable to complete core tasks. It is a coherent space: all learning content grouped by week, with the current week as the default workspace.

Tab 3 -- Schedule: A destination (the student's calendar of live sessions and recordings). Used at least weekly to check session times. Its absence would leave the student unable to attend live sessions. It is a coherent space: all time-based events.

Tab 4 -- Profile: A destination (the student's identity and settings hub). Used at least weekly to check coach information or access support. Its absence would leave hidden features (font, coach, support, resources) without a home. It is a coherent space: everything about the student's account and preferences.

Why 4 tabs, not 5: Phase 2 establishes a 4-tab ceiling. The four tabs above cover the full critical path: orient (Today), learn and submit (Learn), attend sessions (Schedule), and manage identity/get help (Profile). A fifth tab (Progress or Submit) does not meet the threshold. Submission is folded into Learn because it is a step within the weekly learning flow, not a standalone destination. Progress is folded into Learn as a journey map header. The 4-tab bar is the simplest structure that covers 100% of the weekly rhythm.

Key Decision: Submission Lives Inside Learn

Phase 3 identified this as the most important structural question. The decision: submission is unified into the Learn tab, within each week card.

Rationale:

  1. Phase 2's content principle states that items belonging to the same week must be co-located. The Week 7 lesson, the Week 7 submission, and the Week 7 feedback are one unit of work.
  2. A standalone Submit tab violates the "place not action" criterion. Recording is an action, not a destination. A student goes to Learn to engage with their weekly content; recording is one step in that engagement.
  3. The mockup proved that the submission UX is excellent at 95% alignment. That UX does not require its own tab -- it requires a well-designed recording screen accessible from within the week card. The recording interface, confirmation dialog, and feedback sheet are preserved exactly as implemented.
  4. Freeing the tab slot allows Profile to absorb all hamburger-menu content, eliminating the need for a "More" catch-all.

Tab 1: Today -- Screen Hierarchy

Level 0: Today (home screen)

No sub-screens navigate downward from Today. It is a dashboard. All interactive elements navigate laterally to other tabs or open modals:

Empty state (pre-semester): Countdown to semester start, level and coach info, orientation video card, pre-semester sessions card.

Tab 2: Learn -- Screen Hierarchy

Level 0: Learn (weekly learning workspace with [This Week / All Weeks] toggle) Level 1: Week Content (vertically stacked Lesson, Submission, and Feedback sections in continuous scroll) Level 2: Video Player (full-screen video playback) Level 2: Recording Screen (Quranic text display + recording interface) Level 2: Feedback Detail (audio playback + comment thread)

The Learn tab has two modes. "This Week" (default) shows the current week's content as a full workspace with three vertically stacked sections -- Lesson, Submission, Feedback -- in a continuous scroll. The hero header mirrors the Today screen's visual anchor pattern (week number at display size with progress ring). "All Weeks" shows all 15 weeks as compact rows in a single grouped card, with a simplified journey progress indicator at the top.

Each week's content is presented as three vertically stacked sections -- Lesson, Submission, Feedback -- with labeled section headers matching the Today screen's pattern. The vertical layout means all three areas are discoverable by scrolling (no hidden panes), and the natural reading flow mirrors the weekly workflow sequence (learn -> submit -> receive feedback).

Empty state (pre-semester): "This Week" view shows a single orientation card: "Your first lesson unlocks on [date]. In the meantime, watch the orientation video." with the orientation video embedded. "All Weeks" view shows journey progress indicator with all 15 weeks as upcoming.

Pre-placement state (assessment submitted, awaiting level placement): "Your journey begins once you're placed in a level. Assessment results expected within 48 hours." with the orientation video embedded below. Journey progress indicator is not yet visible (level unknown).

Tab 3: Schedule -- Screen Hierarchy

Level 0: Schedule (weekly calendar view with session cards) Level 1: Session Detail (modal sheet with full session info, Zoom link, add-to-calendar) Level 1: Recordings (accessed via "Past" toggle, showing recorded sessions)

The Schedule tab uses the structural design from the mockup, which achieved 95% alignment and zero missing elements. It includes: timezone selector in the header, combined week + day header (merging the week navigator and calendar day strip into a single row), session type filters (All / Level Classes / QRCs / Office Hours), session cards with type badges and state-dependent visual treatments (Live Now, Starting Soon, Upcoming, Ended), Join Zoom buttons, Add to Calendar buttons, RSVP toggles, and deadline cards with urgency-based styling. The visual hierarchy optimizes for scanning speed -- session times and type badges are the most prominent elements, and "Live Now" sessions pin to the top of the list.

A segmented control at the top provides access to recordings: Upcoming | Recordings. The Recordings view shows recorded sessions for previous weeks in a grouped card format (matching the Learn screen's "All Weeks" pattern), with session type labels, dates, watch status indicators, and day-based grouping. This solves the session recordings discoverability problem -- students who come to Schedule looking for a missed session find the recording in the same location.

Empty state (pre-semester): Shows pre-semester "housewarming" sessions if any are scheduled. If none, shows "Sessions begin [semester start date]" with the weekly schedule overview (what types of sessions happen each week).

Pre-placement state (assessment submitted, awaiting level placement): Shows pre-semester housewarming sessions if available, or "Sessions begin once your semester starts" with expected timeline. Session type explanations are visible so the student understands what Level Classes, QRCs, and Office Hours are before the semester begins.

Tab 4: Profile -- Screen Hierarchy

Level 0: Profile (identity card, coach section, menu groups) Level 1: Personal Details (name, email, phone, photo upload) Level 1: Subscription & Billing (plan, payment history) Level 1: Learning History (past levels completed, dates, performance) Level 1: Notifications Settings (push toggle, email preferences, notification types) Level 1: Quranic Font Settings (font selector with preview, font size) Level 1: Display Settings (text size, accessibility options) Level 1: Help Center (FAQ, contact support categories: General, Tech, Billing) Level 1: Resources (organized by category: Essential, Supplementary, Reference) Level 1: About QuranFlow (version, legal)

The Profile tab surfaces every feature previously buried in the hamburger menu. The coach section is prominent -- positioned directly below the profile card, with the coach's photo, name, bio, and a "Message Coach" button. This ensures the coach relationship is visible and the communication channel is discoverable.

Empty state: Never truly empty. Even pre-semester, the profile card shows the student's name, level, and assigned coach.

Pre-placement state (assessment submitted, awaiting level placement): Profile card shows the student's name. Level displays "Pending Assessment Review" with expected timeline. Coach section shows "Your coach will be assigned once you're placed in a level." All settings (font, notifications, display) and support (Help Center, Resources, Contact Support) are fully accessible.


4.3 Screen Specifications

Screen: Today

Purpose: Show the student exactly where they are in the semester and exactly what to do next, without scrolling.

Content (top to bottom):

Navigation Bar:

Week Header (dominant visual element):

This header is the visual anchor of the screen. It is the largest text element. It answers "Where am I?" instantly.

Primary Action Card (context-dependent):

A single prominent card that changes based on the student's state within the weekly cycle. The card has a colored left border (accent color), a title, a subtitle, and a single action button.

The state machine determines the card content:

State Card Title Card Subtitle Button Label
Lesson not started "This Week's Lesson" "Week 8: [Topic Name] -- 2 videos, 8 min total" "Start Lesson"
Lesson in progress "Continue Your Lesson" "Video 2 of 3 remaining -- [Topic Name]" "Continue"
Lesson done, no submission "Ready to Submit" "Week 8 submission -- [Passage Reference]" "Record Submission"
Submission sent, awaiting feedback "Submission Sent" "Submitted [relative time]. Your coach typically responds within 48 hours." "View Submission"
Feedback ready "Feedback from [Coach Name]" "Week 8 feedback is ready to review" "Listen to Feedback"
All done for week "You're All Caught Up" "Great work this week. Your next lesson unlocks in [X] days." "Review Past Weeks"

Status Triptych (three compact status indicators in a horizontal row):

Borrowed from Proposal B. Three small cards side by side, each showing one status:

Card Icon Status Text (examples) Tap Action
Lesson book.fill "2 of 3 videos watched" or "Complete" with checkmark Navigate to Learn > current week > Lesson
Submission mic.fill "Not submitted" or "Submitted [date]" or "1 of 2 attempts used" Navigate to Learn > current week > Submission
Feedback message.fill "No new feedback" or "1 new -- Week 7" with badge Navigate to Learn > current week > Feedback

These three cards answer "What can I do?" and serve the returning student who wants to assess status in 5 seconds.

Upcoming Sessions Section:

Behind State Banner (conditional):

If the student is behind on submissions, a banner appears between the week header and the primary action card:

The language is neutral and functional. It states the fact and offers the path. It does not say "you're behind" or "you're falling behind." It says what can be done.

States:

State What Changes Example
Default / Active Week Full layout as described above Week 8, lesson available, no submission yet
Submission Pending Primary action card shows "Submission Sent" state; Submission status card shows "Submitted [date]" Awaiting coach feedback
Feedback Ready Primary action card shows "Feedback from [Coach Name]" with accent highlight; Feedback status card shows badge New audio feedback to review
All Done for Week Primary action card shows "You're All Caught Up" with relaxed green tone; all three status cards show checkmarks Lesson watched, submitted, feedback reviewed
Behind Behind banner visible above primary action card; primary action card shows oldest incomplete task 2 weeks behind, showing Week 6's lesson
Pre-Semester Week header replaced with countdown: "Semester starts in [X] days"; Primary card shows orientation video; Status triptych replaced with: Level, Coach, and Start Date cards 5 days before Week 1
Empty / First Use (post-assessment) Waiting for level placement: "We're reviewing your assessment. You'll be placed in a level within 48 hours." Assessment submitted, no placement yet
EOC Phase Primary action card shows "End of Course Assessment" with eligibility status; journey progress ring shows near-complete Week 15, 12+ submissions done

Behaviors:

Connection to other screens:


Screen: Learn (Weekly Learning Workspace)

Purpose: Provide the student's weekly learning workspace -- the place where they watch lesson videos, read the assigned Quranic passage, submit their recording, and review coach feedback. The current week's content is the default view and primary focus.

The complete learning journey (all 15 weeks with statuses) is a secondary view for navigation, review, and catch-up -- accessed via the "All Weeks" toggle.

Two distinct modes with distinct purposes:

Mode Purpose Visual Anchor Default?
This Week Do the work. Watch, record, review. Week number + topic header Yes (default on tab tap)
All Weeks Review progress. Navigate to past weeks. Catch up. Journey map + week list No (requires toggle)

The student's mental model: "I tap Learn to do my weekly lesson." Not "I tap Learn to see a map of my semester."

Content (top to bottom):

Navigation Bar:

Segmented Control:


"This Week" View (Default -- Weekly Learning Workspace)

Visual Hierarchy (matching Today's specificity):

The Learn screen mirrors the Today screen's visual hierarchy pattern, adapted for its workspace purpose:

Element Treatment Purpose
Week number Display serif, 58pt, font-black (identical to Today's "Week 8 of 15") Visual anchor. Answers "Where am I?"
Topic name 15pt, semibold, foreground/80 Secondary context. Answers "What am I learning?"
Subtitle 13pt, muted foreground with icon Tertiary context. Shows level, video count.
Progress ring SVG ring, 56pt, right-aligned (identical to Today's) Shows lesson completion at a glance
Section headers 11pt, bold, uppercase, tracked, muted Consistent with Today's section headers
Content cards bg-card, rounded-xl, border (identical to Today's) Consistent card treatment across screens
Primary CTA Gradient card with shadow (identical to Today's Primary Action Card) Submission recording is the primary action

Above-the-fold rule: On first load, the student must see: the week number and "of 15", the topic name, and the beginning of the Lesson section (first 1-2 video rows) -- without scrolling. Submission and Feedback sections are below the fold.

Squint Test target (Phase 2, C2): When the screen blurs, the week number ("Week 8") remains identifiable as the dominant element. The progress ring is the second identifiable element. The video list card is the third.

Hero Header:

The hero header is the visual anchor. It answers "Where am I?" and "What am I working on?" instantly. No journey map appears in this view -- the hero section provides complete temporal context.

The week's content is presented as three vertically stacked sections -- Lesson, Submission, and Feedback -- in a continuous scroll. Each section has a labeled header matching the Today screen's section header pattern (11pt, bold, uppercase, letter-spaced, muted foreground).

LESSON Section:

Section header: "LESSON" (11pt, bold, uppercase, tracked, muted foreground)

Layout rationale (WWDC25 Field Guide, Part 3): The video list uses a List layout (not Grid) because the items have text titles and heterogeneous metadata (title, duration, status). Thumbnails add visual differentiation within the list pattern. Items are grouped in a single card per the "Grouping by Progress" strategy.

SUBMISSION Section:

Section header: "SUBMISSION" (11pt, bold, uppercase, tracked, muted foreground)

Quranic Text Display:

The assigned passage is presented in a dedicated display card that signals its sacred nature through visual treatment:

Rationale: The Quranic text is what distinguishes QuranFlow from a generic learning app. Proper visual treatment of the Arabic calligraphy elevates the entire design and signals respect for the content. Users are reading sacred text -- the visual environment should reflect that.

Submission CTA (state-dependent visual treatment):

The Quranic text card sits directly above the submission CTA, creating the visual flow: read the passage -> record your recitation. The text card and CTA should feel like one unit.

State Visual Treatment
Not yet submitted Gradient CTA card (identical treatment to Today's Primary Action Card): gradient background, small uppercase category label ("Record Your Recitation"), display serif heading ("Submit Week 8 Audio"), description with attempts remaining (e.g., "2 of 2 attempts remaining"), prominent CTA button with shadow. This is the highest-prominence card on the page after the hero.
Under review Standard card with amber-tinted icon container, "Under Review" title, "Submitted [relative time] · Expected within 48h" subtitle. Compact single row. The Quranic text card above can be collapsed (the student no longer needs to reference it actively).
Feedback ready Standard card with green-tinted icon container, "Feedback Ready" title, submission timestamp, right chevron navigating to Feedback section below. Compact single row.

FEEDBACK Section:

Section header: "FEEDBACK" (11pt, bold, uppercase, tracked, muted foreground)


"All Weeks" View (Secondary -- Journey Overview & Navigation)

Journey Progress Indicator:

A simplified horizontal progress indicator appears at the top of this view:

Critical design decision: The dots are visual status indicators, not interactive tap targets. The week list below serves as the interactive navigation. This solves the 44pt minimum tap target problem (15 circles on a 390px screen would each get approximately 20px of space, well below Apple's guideline) and eliminates the need for scroll-to behavior.

Visual Hierarchy (All Weeks View):

Element Treatment Purpose
Journey map Horizontal progress track with status indicators Macro-level orientation
Week summary text 12pt, medium weight "Week 8 of 15 -- 4 completed, 2 behind"
Current week label Accent color, uppercase, tracked Distinguishes current from past
Past week rows Grouped in a single card with dividers Consistent with video list card pattern
Status badges Colored pill labels per status Quick scanning of week states

Week List:

Past and future weeks are displayed as compact rows within a single grouped card (bg-card, rounded-xl, border border-border/60, dividers between rows). This matches the video list card pattern and the Today screen's session card pattern.

Row layout:

Status badges: "Complete" (green) / "In Progress" (blue) / "Not Started" (gray) / "Feedback Ready" (amber with dot) / "Behind" (amber)

Expansion behavior (progressive disclosure, per WWDC25 Field Guide Part 3):

When a row is tapped, it expands inline to show a compact status summary -- three mini-status indicators in a horizontal row:

Lesson Submission Feedback
3/3 watched Reviewed Ready

Plus a "View Full Week" action that loads the complete week content in the workspace layout (replacing the current view with "This Week" mode for the selected week).

Why not full inline expansion: Expanding a past week to show its complete content (video list + Quranic text + feedback audio player) inside a card row creates extreme layout disruption. The expanded state would be 5-10x the height of the collapsed row, breaking the visual rhythm. The compact summary provides status at a glance, and "View Full Week" provides the escape hatch for full content. This follows the Progressive Disclosure pattern: show the top-level summary, add a disclosure indicator, let the user tap through to the full content.

States:

State What Changes Example
Default / Active Week "This Week" view shows hero header and three vertical sections; Lesson section shows video list with partial progress Week 8, 2 of 3 videos watched
Submission Pending Submission section shows "Under Review" compact card with amber icon and timestamp Submitted 6 hours ago
Feedback Ready Feedback section shows coach audio player card; hero header may show "Feedback Ready" accent indicator Coach's audio feedback available
All Done for Week Hero header shows "Complete" state with green accent; all three sections show completed states All videos watched, submission done, feedback reviewed
Behind "All Weeks" view shows incomplete weeks with amber status badges; behind banner appears at the top of "This Week" view Weeks 5 and 6 incomplete, currently Week 8
Pre-Semester "This Week" view replaced with single orientation card: "Your first lesson unlocks on [date]. In the meantime, watch the orientation video." Orientation video embedded. "All Weeks" view shows journey map with all weeks as upcoming. Before Week 1
Empty / First Use Same as Pre-Semester but with placement pending message: "Your journey begins once you're placed in a level." Journey progress indicator not yet visible (level unknown). Enrolled but semester not started
EOC Phase An additional card at the top of "This Week" view: "End of Course Assessment" with distinct styling (gold/amber border, graduation cap icon); only appears when student has 12+ submissions completed Week 15 area

Behaviors:

Connection to other screens:


Screen: Recording Screen (Level 2 within Learn)

Purpose: Allow the student to view the Quranic passage, record their recitation, review it, and submit to their coach.

Content (top to bottom):

Navigation Bar:

Week and Attempt Info:

Quranic Text Display:

Recording Interface:

Confirmation Dialog (on submit tap):

Success State (after confirmed submit):

States:

State What Changes
Ready to Record Quranic text displayed, Record button prominent
Recording Waveform animation, Stop button
Review Playback controls visible, Re-record and Submit buttons
Submitting Loading indicator on Submit button
Success Checkmark animation, confirmation message
No Attempts Left Record button disabled, message: "You've used both attempts this week. Your next attempt opens [date]."

Behaviors:

Connection to other screens:


Screen: Video Player (Level 2 within Learn)

Purpose: Play lesson videos with reliable playback and progress tracking.

Content:

Behaviors:

Connection to other screens:


Screen: Schedule

Purpose: Show the student's weekly live session schedule with timezone clarity, session details, and access to recordings of past sessions. The Schedule screen optimizes for scanning speed -- students come with a specific temporal question ("When is my next session? How do I join it?") and need to find the answer fast.

Content (top to bottom):

Navigation Bar:

Timezone Selector (drops down on tap):

Segmented Control:


Upcoming View

Visual Hierarchy (Schedule -- Upcoming View):

The Schedule screen's visual design optimizes for scanning speed, not emotional anchoring. Unlike Today and Learn (which use 58pt hero headers to answer "Where am I in the semester?"), the Schedule screen answers "When is my next session?" -- a question best served by prominent session cards, not a hero header.

Element Treatment Purpose
Navigation bar title "Schedule" -- standard nav bar title (17pt, semibold) Screen identification
Timezone indicator 13pt, semibold, primary color, right-aligned in nav bar Always-visible timezone context (C4)
Segmented control Standard iOS segmented control, compact Mode switching
Week + day strip Combined single row (see below) Temporal context and day selection
Session type filters 12pt, medium weight, pill buttons, horizontally scrollable Content filtering
Session time 15pt, bold, tabular figures, high contrast The most scannable element -- answers "when?"
Session type badge Status Badge Pattern (10pt, semibold, uppercase, color-coded) Quick categorization
Session title 13pt, semibold, foreground Session identification
Join button (live) 13pt, bold, green fill, prominent Highest-urgency interactive element
Join countdown (upcoming) 12pt, muted, right-aligned Expectation setting
Deadline cards 13pt, semibold, dashed border, muted background Distinct from session cards

Above-the-fold rule: On first load (current week, current day selected), the student must see at least 2 session cards without scrolling. If no sessions exist today, the "no sessions" message and the next session preview must be visible without scrolling.

Squint Test target (Phase 2, C2): When the screen blurs, the student should identify a vertical rhythm of session cards with colored type badges on the left edge and time values standing out. On a day with a live session, the green "Join" button should be the single most identifiable element. On a normal day, the time column and type badges create the visual structure.

Week + Day Header (combined single row):

A single row combining week context and day selection, replacing the separate week navigator and calendar day strip to reduce navigation chrome and ensure session cards appear above the fold:

Session Type Filters:

Session Cards (individual cards, list below filters):

Each session card follows the Card Pattern (bg-card, rounded-xl, border border-border/60) with the following internal structure:

Type badge colors (consistent with Today screen):

Type Background Text
Level Class oklch(0.92 0.04 285) oklch(0.40 0.15 285) -- purple
QRC oklch(0.92 0.04 160) oklch(0.40 0.10 160) -- teal/green
Office Hours oklch(0.92 0.06 75) oklch(0.45 0.12 75) -- amber/warm

Touch interaction: active:scale-[0.99] on press (slightly less than the standard 0.97 because session cards are wide -- aggressive scaling on wide elements looks jumpy), 150ms ease-out transition, touch-manipulation.

Session card spacing: 8pt gap between cards. Individual cards (not grouped) because session cards are heterogeneous (different types, different action states, interspersed deadline cards) and each must be a distinct tappable unit.

Session Card State Treatments:

"Live Now" state (session currently in progress):

The most time-critical state in the entire app. The student needs to join immediately.

"Starting Soon" state (within 15 minutes of session start):

"Upcoming" state (default):

"Ended" state:

Visual priority stack for session states:

State Visual Weight Key Differentiator
Live Now Highest Green border, pulsing dot, Join button, pinned to top
Starting Soon High Join button active, countdown, pinned to top
Upcoming Standard Default card, chevron
Ended Lowest 60% opacity, no action

Dense Day Handling: If more than 7 sessions are displayed for a single day (after pinned cards), sessions are grouped by type (Level Classes, QRCs, Office Hours) with collapsed sections. Each collapsed header shows the type name and count: "QRCs (5)" -- tap to expand. Expanded sections use the grouped card pattern (single card with dividers between rows). This satisfies the 7-item progressive disclosure rule while maintaining scannability on days with many sessions.

Deadline Cards (interspersed with sessions at chronological position):

Deadline cards use a distinct visual treatment to prevent confusion with session cards. They appear at their chronological position (e.g., a Friday 11:59 PM deadline appears after Friday's last session).

Base treatment (deadline > 24 hours away):

Approaching treatment (deadline within 24 hours):

Imminent treatment (deadline within 3 hours):

Passed treatment (deadline has passed):

Note: If the current week's submission is already sent, the deadline card shows a subtle "Submitted" checkmark and uses the base (muted) treatment regardless of time proximity. Urgency states only apply when the submission is still pending.


Recordings View

The Recordings view uses the same Week + Day Header as the Upcoming view (shared navigation element) and the same session type filter pills ("All" selected by default).

Recordings List:

Below the header, recordings are presented in a grouped card (bg-card, rounded-xl, border border-border/60) with dividers (border-border/40), grouped by day within the selected week. The grouped card pattern matches the Learn screen's "All Weeks" week-list pattern and is appropriate here because recordings are a review list (no urgent actions, compact scanning).

Day group header (within the grouped card):

Recording row layout:

Progressive disclosure for dense weeks: If a week has more than 10 recordings, the grouped card shows the first 7 rows with a "Show all [N] recordings" footer link (Phase 2 Content Principle 1 -- 7-item rule).

Empty state: "No recordings for this week yet. Recordings appear here after live sessions end." Displayed as muted centered text (13pt, muted foreground) within a single card container.


Schedule Pattern References

Element Pattern Reference
Session cards Card Pattern (standard) Section 4.3.5
Recording rows Card Pattern (grouped) Section 4.3.5
Session type badges Status Badge Pattern Section 4.3.5
Section labels Section Header Pattern Section 4.3.5
"Join" button (live) Custom green action Not Gradient CTA -- the Join button is a utility action, not a promotional CTA. Gradient CTA is reserved for max one per screen (Today's Primary Action, Learn's Submission CTA).
Session card tap Touch Interaction Pattern Section 4.3.5 -- active:scale-[0.99]
Filter pills Custom 12pt medium, rounded-full, primary tint when active
Deadline cards Custom Dashed border distinguishes from Card Pattern

States:

State What Changes Example
Default / Active Week Current week's sessions displayed with today highlighted; at least 2 session cards visible above the fold Tuesday of Week 8, 3 sessions today
Session Live Now Session card pinned to top with green border, pulsing "LIVE" indicator, and prominent green "Join" button. "Happening Now" section header separates from chronological list below. QRC happening right now
Session Starting Soon Session card pinned to top with "Join" button active and "in [X] min" countdown. Grouped with any "Live Now" cards. Level Class starts in 8 minutes
No Sessions Today "No sessions scheduled for today. Next session: [day], [time]" visible above the fold Saturday (no sessions on this day)
Pre-Semester Shows pre-semester housewarming sessions; header says "Pre-Semester Sessions" Before Week 1
Empty "Sessions begin when your semester starts on [date]." Enrolled but no sessions yet

Behaviors:

Session Detail Modal -- Session Type Explanations:

The Session Detail modal includes a one-line type explanation below the type badge, providing just-in-time context for new students:

Session Type Explanation
Level Class "Your weekly class with all Level [X] students. Covers this week's lesson material."
QRC "Quran Reading Circle -- small group practice session. Read aloud and get real-time coaching."
Office Hours "Drop-in session for questions, extra practice, or catch-up help with your coach."

This explanation appears in 13pt body text, muted foreground, directly below the session type badge in the modal header. After the student's third visit to Schedule (tracked locally), the explanation collapses to show only on tap of a small info icon next to the type badge -- progressive disclosure that serves Week 1 students without patronizing Week 8 students.

Connection to other screens:


Screen: Profile

Purpose: Provide access to the student's identity, their coach relationship, all settings, and support -- replacing the hamburger menu entirely.

Content (top to bottom):

Navigation Bar:

Profile Card:

Quick Stats Row:

My Quran Coach Section:

Menu Groups:

Account:

Settings:

Support:

Bottom:

States:

State What Changes Example
Default Full profile with all sections Mid-semester student
Pre-Semester Status shows "Pre-Semester"; Learning History may be empty for first-time students New enrollment
Post-Graduation Status shows "Level Complete -- Awaiting Next Semester"; Learning History shows completed level Between semesters
Year 2 Transition Additional section appears: "QuranFlow Advanced" with information about the Year 2 program and enrollment link Level 4 graduate

Behaviors:

Connection to other screens:


Screen: Notification Sheet (Modal from Today)

Purpose: Show the student all recent notifications in one place with deep links to relevant content.

Content:

States:


Screen: Onboarding Flow (First Launch)

Purpose: Orient a new student to the app in under 2 minutes, setting critical defaults and providing essential context.

This is detailed fully in Section 4.8.


4.3.5 Visual Design Language (Shared Across All Screens)

This section defines the shared visual patterns used across all screens. Defining them once ensures visual consistency and prevents the drift that occurs when each screen specification re-describes (or fails to describe) the same patterns.

Rationale: Three rounds of Learn screen implementation revealed that without explicit visual pattern definitions, each screen's implementation diverges from established patterns. This section codifies the patterns established by the Today screen and applied consistently across the app.

Hero Typography Pattern

The dominant visual element on primary screens. Used for week numbers and screen-level anchors.

Section Header Pattern

Consistent labeling for content sections across all screens.

Card Pattern

The standard content container used across all screens.

Gradient CTA Pattern

The highest-prominence interactive element. Used for the single most important action on a screen.

Status Badge Pattern

Colored pill labels for quick status scanning.

Progress Ring Pattern

Circular SVG indicator for completion percentage.

Touch Interaction Pattern

Consistent interaction feedback for all tappable elements.


4.4 Critical User Flows

Flow 1: First-Time Student Opens the App (Onboarding)

Precondition: Student has submitted their initial assessment and received level placement. They open the app for the first time post-placement.

Step Action Screen Result
1 Open app Onboarding Step 1 "Welcome to QuranFlow" card with student's name
2 Tap "Get Started" Onboarding Step 2 "You've been placed in Level [X]" with level description
3 Tap "Next" Onboarding Step 3 Font selection: "Choose your Quranic text style" with Amiri Quran (mushaf) pre-selected and a preview. Student taps "Confirm" or changes selection.
4 Tap "Confirm" Onboarding Step 4 "Meet Your Quran Coach" showing coach photo, name, bio, and "Your coach will review your weekly submissions and send personalized feedback."
5 Tap "Next" Onboarding Step 5 "Your Semester" -- a mini journey map showing Week 1 through 15, start date, weekly rhythm explanation: "Each week: Watch lesson, Submit recording, Get feedback, Attend live sessions."
6 Tap "Start Learning" Today screen (pre-semester or Week 1) Lands on Today with full context. If pre-semester, shows countdown. If Week 1, shows first lesson card.

Total taps on critical path: 5 (Welcome > Level > Font > Coach > Semester > Today) Time estimate: 60-90 seconds Why this works: Each step delivers one piece of essential information. Font selection (the P0 fix) happens before the student ever sees Quranic text. The coach introduction happens before the student ever receives feedback. The semester overview happens before the student has to navigate the app independently.


Flow 2: Watch This Week's Lesson

Precondition: Active semester, Week 8. Lesson available but not started.

Step Action Screen Result
1 Open app Today Primary action card shows "This Week's Lesson -- Week 8: [Topic]. 2 videos, 8 min total."
2 Tap "Start Lesson" Learn tab, "This Week" view, Lesson section Video list card visible with thumbnails: Video 1 (unwatched, 4:12), Video 2 (unwatched, 3:48). Learning objectives displayed above.
3 Tap Video 1 row Video Player Video plays. Student watches.
4 Video ends or student taps "Back to Lesson" Learn tab, Lesson section Video 1 now shows green checkmark. Thumbnail desaturated. Video 2 still unwatched.
5 Tap Video 2 row Video Player Second video plays.
6 Video ends Learn tab, Lesson section Both videos show checkmarks. Progress footer shows "2/2". "Mark Lesson Complete" button appears.
7 Tap "Mark Lesson Complete" Learn tab, Lesson section Confirmation dialog: "Mark Week 8 lesson complete?" Student confirms. Lesson status updates to "Complete."

Total taps on critical path: 5 (Open app > Start Lesson > Video 1 > Video 2 > Mark Complete) Actual engagement taps: 2 to reach first video from app launch Why this works: The Today screen surfaces the lesson as the primary action. One tap reaches the video list. One more tap starts the video. No hunting.


Flow 3: Submit Weekly Recording

Precondition: Week 8 lesson watched. Student ready to submit.

Step Action Screen Result
1 Open app Today Primary action card shows "Ready to Submit -- Week 8 submission."
2 Tap "Record Submission" Learn tab, "This Week" view, Submission section Quranic text visible in dedicated warm-tinted card (Amiri Quran font). Gradient CTA card below: "Submit Week 8 Audio". Attempts: "2 of 2 Remaining."
3 Tap "Record Submission" Recording Screen Full Quranic text display. Large record button.
4 Tap Record Recording Screen (recording state) Waveform animation. Student recites.
5 Tap Stop Recording Screen (review state) Playback controls appear. Re-record and Submit buttons visible.
6 Tap Play (optional) Recording Screen (review state) Student listens to their recording.
7 Tap Submit Confirmation Dialog "Submit This Recording? This will be sent to Coach [Name]. You will have 1 attempt remaining."
8 Tap "Submit" (confirm) Recording Screen (success state) Checkmark animation. "Recording Submitted. Your coach will respond within 48 hours."
9 Tap "Return to Week 8" Learn tab, Submission section Submission CTA card shows "Under Review" compact state with amber icon. Quranic text card collapses.

Total taps on critical path: 7 (Open > Record Submission > Record Submission button > Record > Stop > Submit > Confirm) Taps from app launch to recording start: 3 (Record Submission on Today > CTA button in Submission section > tap Record) Why this works: The path from app launch to recording is direct. The confirmation dialog prevents accidental submissions. The success state sets clear expectations about feedback timing.


Flow 4: Check and Respond to Feedback

Precondition: Coach has sent audio feedback for Week 7 submission.

Step Action Screen Result
1 Open app (or receive push notification) Today Primary action card shows "Feedback from Coach [Name] -- Week 7 feedback is ready to review." Feedback status card shows badge.
2 Tap "Listen to Feedback" Learn tab, Week 7's Feedback section Coach avatar, audio player card, timestamp.
3 Tap Play on audio player Learn tab, Week 7, Feedback section Audio feedback plays through device speakers.
4 (Optional) Type follow-up question Learn tab, Week 7, Feedback section Text input field: "Ask a follow-up question..." Student types and taps Send.
5 Tap Send Learn tab, Week 7, Feedback section Comment posted. Coach notified. Comment appears in thread.

Total taps on critical path: 3 (Open > Listen to Feedback > Play) Why this works: Feedback is surfaced on the Today screen the moment it arrives. One tap reaches the audio player. No hunting through archives or filters.

Alternative entry via push notification:

Step Action Result
1 Receive push notification: "Feedback Ready -- Week 7. Coach Amina reviewed your submission." Notification banner on device
2 Tap notification App opens to Learn tab, Week 7, Feedback section with audio player ready

Taps from notification: 1


Flow 5: Find and Join a Live Session

Precondition: Active semester. A QRC is scheduled for today at 7:00 PM EST.

Step Action Screen Result
1 Open app Today Upcoming Sessions section shows "QRC -- 7:00 PM EST -- Sisters Reading Circle"
2 Tap session card Schedule tab, session highlighted Session detail modal: full description, coach name, "Join Zoom" button, "Add to Calendar" button, RSVP toggle.
3 Tap "Join Zoom" (if within 15 min of start) External: Zoom app opens Student joins the live session.

Total taps on critical path: 2 (Open > session card > Join Zoom) Alternative: Navigate to Schedule tab directly (1 tap from tab bar), select day, find session (1-2 taps). Why this works: Today's sessions are visible on the home screen. Join is 2 taps away. Timezone is always displayed. No ambiguity about when or where.


Flow 6: Catch Up After Missing a Week

Precondition: Student is at calendar Week 8 but has not submitted for Weeks 6 and 7. They are 2 submissions behind.

Step Action Screen Result
1 Open app Today Behind banner: "You have 2 submissions to catch up on. You can submit up to 2 this week." Primary action card shows Week 6 lesson (the oldest incomplete).
2 Tap "Catch Up" Learn tab, "This Week" view loading Week 6 Week 6 content displayed in workspace layout. Lesson section shows unwatched video rows with thumbnails.
3 Watch Week 6 videos Video Player Student watches.
4 Scroll to Week 6 Submission section Learn tab, Week 6, Submission section Quranic text card and gradient CTA ready.
5 Record and submit Week 6 Recording Screen > Confirmation > Success Submission sent. "1 of 2 catch-up submissions used this week."
6 Return to Learn tab Learn tab Week 6 shows "Under Review." Week 7 is the next incomplete week. Its card is highlighted.
7 Repeat for Week 7 Same flow Week 7 submitted.
8 Return to Today Today Behind banner gone. Primary action card now shows Week 8 lesson (current week).

Total taps for one catch-up submission: Same as Flow 3 (7 taps) Why this works: The behind banner is visible immediately. The "Catch Up" button takes the student to the right place. The system tracks catch-up submissions against the 2-per-week limit. The language is functional ("You can submit up to 2 this week") not shaming ("You're behind").


Flow 7: Pre-Semester Experience

Precondition: Student completed assessment, placed in Level 2, assigned Coach Amina. Semester starts in 5 days.

Step Action Screen Result
1 Open app (first time after onboarding) Today (pre-semester state) Week header replaced with: "Semester starts in 5 days" with date. Three cards below: Level ("Level 2 -- Reading with Fluency"), Coach ("Coach Amina" with photo), Start Date ("January 15, 2026 -- Saturday").
2 Scroll down Today (pre-semester state) Primary action card: "Get Ready for Your Semester" with orientation video thumbnail and "Watch Now" button. Below: "Pre-Semester Sessions" showing any housewarming sessions available.
3 Tap "Watch Now" Video Player Orientation video plays explaining the weekly rhythm, what resources are available, and how to use the app.
4 Return to Today Today (pre-semester state) Orientation card now shows "Watched" checkmark.
5 Tap a housewarming session Schedule tab Session detail with Join Zoom button.

Why this works: The student is never in a state where the app is empty or confusing. Pre-semester has its own clear purpose: orient, prepare, get excited. The countdown eliminates the "when does semester start?" emails entirely.


Flow 8: End-of-Semester Assessment and Graduation

Precondition: Student has completed 13 of 15 weekly submissions. It is Week 15. EOC assessment is available.

Step Action Screen Result
1 Open app Today (EOC state) Primary action card: "End of Course Assessment. You've completed 13 submissions and are eligible for the EOC. This assessment covers all concepts from Level 2." Button: "Begin Assessment." Journey progress ring shows 93%.
2 Tap "Begin Assessment" Learn tab, EOC week card expanded Special EOC card at the top of the Learn tab. Distinct styling (gold/amber border). Shows: "End of Course Assessment -- Level 2" with description of what it covers, the Quranic passage for assessment, and "Record EOC Submission" button.
3 Tap "Record EOC Submission" Recording Screen (EOC variant) Same recording interface. Header says "End of Course Assessment." Passage is the EOC passage.
4 Record, review, submit Recording Screen > Confirmation > Success "EOC Assessment Submitted. Your coach will evaluate your submission and determine your graduation status. This may take up to 5 business days."
5 (Wait for results) Today Primary action card shows "EOC Under Review. Results expected by [date]."
6 Results arrive (notification) Today Primary action card: "Congratulations! You've graduated Level 2." with celebration visual (confetti animation or equivalent). Below: "Your Results" card showing coach's feedback, pass status, and "Next: Level 3" information.
7 Tap "View Results" Learn tab, EOC card Full results: Coach's audio feedback on EOC, written evaluation if any, graduation confirmation.
8 Tap "Continue to Level 3" Profile or modal Information about next semester: start date, new level description, whether coach changes. If Level 4 graduate: "You're eligible for QuranFlow Advanced" with enrollment information (see Section 4.9).

Total taps from results notification to viewing results: 2 Why this works: The EOC is not a hidden feature. It surfaces automatically when the student is eligible. The results communication is clear and celebratory. The transition to the next level or Year 2 is explicit.


4.5 Surfacing Strategy

Every feature that was previously hidden behind the hamburger menu now has a discoverable home.

Currently Hidden New Location Taps to Reach How User Discovers It
Quran Coach (TA) Profile tab -- "My Quran Coach" section with photo, name, bio, Message button. Also visible on Today screen during pre-semester as one of the three intro cards. Coach name appears on feedback audio in Learn tab. 1 (Profile tab) Prominent section with photo on Profile tab. Name appears contextually on Today (pre-semester) and on feedback screens.
Weekly schedule Schedule tab -- dedicated tab with calendar view, timezone, session cards, filters. Preview on Today screen showing today's upcoming sessions. 1 (Schedule tab) or 0 (visible on Today) Tab bar makes it permanently visible. Today screen shows a preview.
Session recordings Schedule tab -- "Recordings" view via toggle [Upcoming / Recordings]. 2 (Schedule tab > Recordings toggle) Toggle is visible on the Schedule tab's main screen. Students looking for a missed session find recordings in the same place they look for live sessions.
Mushaf font setting Onboarding step 3 (mandatory during first launch). Profile tab > Settings > Quranic Font for later changes. Also accessible via inline font picker on the Recording Screen. 0 (onboarding sets it), 2 (Profile > Quranic Font), or 1 (inline picker on Recording Screen) Onboarding ensures every student sets it before seeing Quranic text. Inline picker on Recording Screen provides in-context access.
Support/help Profile tab -- "Support" section with Help Center, Contact Support, and Resources. 2 (Profile > Help Center) Profile tab is always accessible via tab bar. Support section has clear labeling. Help Center provides self-service FAQ.
Feedback archives Learn tab -- feedback is in each week's Feedback section. Browse all weeks via "All Weeks" view. Feedback for any week is accessible by tapping "View Full Week" on the week row. 2 (Learn tab > All Weeks > View Full Week > Feedback section) Feedback is co-located with the submission it relates to. No separate archive to navigate. Browsing "All Weeks" shows feedback status badges on each week row.
Student level Today screen -- always visible in the week header: "Week 8 of 15 -- Level 2." Profile tab -- profile card shows level. Learn tab -- hero header shows level in subtitle. 0 (visible on Today without any taps) Permanently displayed on the home screen. Cannot be missed.
Submission history Learn tab -- each week's Submission section contains a submission history. "All Weeks" view shows all weeks with submission status badges. 2 (Learn tab > All Weeks > View Full Week > Submission section) Submission is co-located with the lesson it relates to. Each week row shows whether a submission exists and its status.
Semester start date Today screen (pre-semester state) -- countdown: "Semester starts in [X] days" with date. Onboarding step 5 shows the date. 0 (visible on Today during pre-semester) Impossible to miss. It is the dominant element on the Today screen when the semester has not started.
Resources Profile tab -- "Resources" section within Support, organized by category (Essential, Supplementary, Reference). Level Notes PDF linked in the Lesson section of each week. 2 (Profile > Resources) Organized by importance. Essential resources (Level Notes) are also accessible from within the learning flow.

4.6 State Management

Temporal Events

New week unlocks (Saturday):

Submission deadline approaches (2 days before, 1 day before):

Live session about to start (15 minutes before):

Session is live:

Semester about to end (1 week before EOC deadline):

User Actions

Completes a lesson video:

Submits a recording:

Listens to feedback:

Asks a follow-up question:

RSVPs for a session:

External Events

Feedback arrives from coach:

Schedule changes (session time changed, cancelled, or new session added):

New announcement posted:

Notification received (general):


4.7 Edge Cases & Empty States

Pre-Semester Student

Context: Completed assessment, placed in a level, assigned a coach. Semester has not started.

Today screen:

Learn tab: "This Week" view shows a single orientation card: "Your first lesson unlocks on [date]. In the meantime, watch the orientation video to learn how the program works." Orientation video embedded. "All Weeks" view shows journey progress indicator with all 15 weeks as upcoming.

Schedule tab: Shows pre-semester sessions if any. If none: "Live sessions begin on [date]. Here's what to expect each week:" followed by a schedule overview (types of sessions, typical days and times).

Profile tab: Full profile with coach section, settings (including font), and resources. No empty states here.

Week 1 Student (First Day)

Context: Semester just started. First lesson unlocked. No submissions yet. No feedback.

Today screen:

Learn tab: "This Week" view shows Week 1 content in workspace layout. Lesson section shows video list with thumbnails. Submission section: Quranic text card displayed, CTA reads "Watch the lesson first, then record your submission" (disabled until lesson complete). Feedback section: "Submit your recording to receive feedback from your Quran Coach."

Behind indicator: Not shown. The student is not behind -- they are at the beginning.

Caught-Up Student

Context: Mid-semester. All lessons watched, all submissions on time, feedback reviewed.

Today screen:

Behind Student

Context: Calendar says Week 8. Student has only completed through Week 5.

Today screen:

Critical design decision -- What "Week 8 of 15" means when behind: The header always shows the calendar week (Week 8) because this is an objective fact tied to the semester timeline. Showing "Week 5" (where the student's content is) would mislead them about time remaining. Instead, the behind banner bridges the gap: the student sees they are in Week 8 of the semester but have Week 6 and 7 content to catch up on. This is honest without being shaming.

Learn tab: All weeks are visible in "All Weeks" view. Incomplete weeks (6 and 7) show "Incomplete" badges with amber borders. Current week (8) shows as the newest card. The student can work on any incomplete week.

End-of-Semester Student

Context: Week 15. Student has 13 submissions completed. EOC is available.

Today screen:

Learn tab: EOC card appears at the very top of "This Week" view with distinct styling (gold/amber border, graduation cap icon). In "All Weeks" view, journey progress indicator shows the student near the end of the track with the EOC marker highlighted.

Year 2 Transition (Level 4 Graduate)

Context: Student has graduated from Level 4. They are eligible for QuranFlow Advanced (Year 2).

Today screen (post-graduation state):

Learn tab: Journey progress indicator shows all 15 weeks completed with EOC passed. Below: a card explaining Year 2 and what to expect. All past week content remains accessible for review via "All Weeks" view.


4.8 Onboarding Flow

Trigger

Onboarding triggers on the first app launch after the student has received their level placement (assessment complete, level assigned, coach assigned). If the student opens the app before placement (assessment submitted but not yet reviewed), they see a waiting state: "We're reviewing your assessment. You'll be placed in a level within 48 hours." with a progress indicator.

What Onboarding Must Accomplish

  1. Confirm the student's level placement
  2. Set the Quranic font to mushaf (mandatory)
  3. Introduce the assigned coach
  4. Show the semester timeline and weekly rhythm
  5. Set notification preferences
  6. Land the student on the Today screen with full context

The Flow

Step 1: Welcome

Step 2: Your Level

Step 3: Choose Your Font (Required -- cannot be skipped)

Step 4: Meet Your Coach

Step 5: Your Semester

Step 6: Notification Permission (System)

Landing:

Constraints Met


4.9 End-of-Semester & Graduation

EOC Assessment Flow

Eligibility: The student must have completed at least 12 of 15 weekly submissions. The EOC becomes available in Week 14 or 15 (program-defined timing).

How it surfaces:

  1. Today screen: When the student is eligible, the primary action card transitions to EOC state: "End of Course Assessment -- You've completed [N] of 15 submissions and are eligible. This assessment covers all concepts from Level [X]." Button: "Begin Assessment."

  2. Learn tab: An EOC card appears at the top of the week list, above Week 15 (or after Week 15, as the culminating item). It has distinct styling: gold/amber border, graduation cap icon, "End of Course Assessment" header. The card contains:

    • Description: "This final submission covers all concepts from your level. Record your best recitation of the assigned passage."
    • Quranic text passage for the EOC
    • "Record EOC Submission" button
    • Same recording interface as weekly submissions
  3. Journey progress indicator: In "All Weeks" view, the EOC is the final node on the progress track, appearing after Week 15. When the student is eligible, this node is highlighted.

If not yet eligible:

Results Communication

Timeline: Results take up to 5 business days (longer than weekly feedback, because the coach evaluation is more thorough).

Waiting state:

Results arrive (via push notification):

Pass (Graduation):

Fail (did not pass EOC):

Transition to Next Level (Level 1-3 graduates)

After passing EOC:

  1. Transition card on Today: "You're moving to Level [X+1]! Here's what to expect:" with a brief description of the next level's focus.
  2. Key information displayed:
    • Next level name and description
    • Next semester start date (if known) or "Enrollment for next semester opens [date]"
    • Whether the coach changes: "You'll continue with Coach [Name]" or "You'll be assigned a new coach for Level [X+1]"
  3. Action: "Enroll in Level [X+1]" button (if enrollment is open) or "We'll notify you when enrollment opens"
  4. Access to past content: All completed level content remains accessible in Learn tab under a "Past Levels" section (accessible via a filter or segmented control on the Learn tab)

Year 2 Information (Level 4 Graduates)

After passing Level 4 EOC:

This is a special transition because the learning model changes entirely. The transition card is more detailed:

  1. Celebration: Same graduation celebration as other levels.

  2. Year 2 Introduction Card:

    • "You've Completed QuranFlow Essentials!"
    • "You're now eligible for QuranFlow Advanced -- our continued learning program for graduates."
    • Key differences explained clearly:
      • "No more weekly submissions -- you've mastered that skill"
      • "1-on-1 appointments with Quran Coaches for personalized guidance"
      • "Elective-based curriculum -- choose what you want to focus on"
      • "Live sessions continue (QRCs, Office Hours)"
    • "Enrollment is separate and opens [date]"
  3. If enrolled in Year 2: The app transitions to Year 2 mode. The tab bar remains the same (Today, Learn, Schedule, Profile) but the content adapts:

    • Today screen: Shows upcoming appointments instead of weekly lesson/submission/feedback
    • Learn tab: Shows elective content instead of sequential week cards; no submission sections
    • Schedule tab: Includes appointment booking alongside live sessions (new "Appointments" section)
    • Profile tab: Unchanged

    Scope note: Year 2 interaction design (appointment slot display, booking flow, elective selection, 1-on-1 session management) is deferred to a separate Year 2 design phase. This architecture covers the Year 1-to-Year 2 transition experience only. Year 2 tasks (5A.1, 5A.2, 5A.3 from the Capability Map) are not counted as covered by this specification.

  4. If not enrolled: The app shows a graceful post-graduation state with access to all past content and information about Year 2.


Summary of Key Decisions

Decision Resolution Rationale
Tab bar composition Today, Learn, Schedule, Profile (4 tabs) Covers the full critical path. Eliminates hamburger menu. Each tab passes the Tab Worthiness Test.
Submission as tab vs. unified Unified into Learn, within each week card Week-as-unit grouping (Phase 2 Content Principle). Recording is an action, not a destination. Frees tab slot for Profile.
Home screen dominant element "Week [N] of 15" as the giant header Temporal orientation first (Phase 2 Principle Priority Stack). Fixes the core disorientation problem.
Feedback location Inside each week's Feedback section in Learn + surfaced on Today when new Co-located with the submission it relates to (Phase 2 test C3). Also browsable by scrolling through weeks. No separate archive needed.
Schedule prominence Own tab (Tab 3) Was hidden 5 clicks deep. Used weekly. The mockup proved it works excellently standalone.
Behind-state handling Amber banner on Today with neutral language and "Catch Up" button. Calendar week always shown honestly. Neutral and functional, not shaming. Catch-up path is one tap away. Shows real week so student understands time remaining.
Feedback history access Browse "All Weeks" in Learn, tap any week row, then "View Full Week" to reach Feedback section No complex month/year filters. Feedback is always adjacent to its submission. Week-grouped as required by Phase 2 test C3.
Onboarding model 5-step guided flow (Welcome > Level > Font > Coach > Semester) with mandatory font selection Addresses P0 font issue. Completable under 2 minutes. Not a tutorial. Information findable later in Profile and Learn.
Session recordings location Schedule tab > Recordings toggle Students who look for a missed session find recordings where they look for live sessions. Natural co-location.
Year 2 architecture Same tab bar, content adapts (appointments replace submissions, electives replace sequential weeks) Tab structure does not need rebuilding for Year 2. Architecture flexes to accommodate a different learning model.

Quality Bar Validation

Checking the architecture against every test from Phase 2:

Structure Tests

S1 -- The 3 Questions Test (10-second rule):

S2 -- No Hamburger Menu: Zero hamburger menus in the architecture. All features housed in the 4-tab structure. PASS.

S3 -- Core Task Reach in 2 Taps: Verified against every [Core] task:

S4 -- Hidden Features Eliminated: All 8 hidden features from Phase 1 have new discoverable homes (verified in Section 4.5). PASS.

Navigation Tests

N1 -- Tab Bar Destination Test: Today (destination), Learn (destination), Schedule (destination), Profile (destination). All are places. All are visited weekly. All are coherent information spaces. PASS.

N2 -- No Actions on the Tab Bar: Today, Learn, Schedule, Profile -- all nouns, all destinations. No "Record," "Submit," or "+" on the tab bar. PASS.

N3 -- First Submission Without Help: Flow 3 demonstrates the full submission path from app launch. Onboarding introduces the weekly cycle. The Today screen surfaces the submission action. The Learn tab provides the recording interface. No emails, no external help needed. PASS.

N4 -- Return Test (5-second rule): Today screen shows the submission status card: "Submitted [date]" or "Not submitted" or "Feedback ready." Visible without scrolling. PASS.

Content Tests

C1 -- No Screen Exceeds 7 Unmediated Items: Today: max 7 items (header, primary card, 3 status cards, sessions section, behind banner). Learn: weeks are collapsed by default; only current week expanded. Schedule: sessions filtered by day (typically 3-5 per day); dense days with 7+ sessions trigger type-based grouping with collapsed sections; recordings view shows max 7 rows before "Show all" disclosure. PASS.

C2 -- The Squint Test: Today: week header is the dominant element. Learn: week number hero header (58pt) is the dominant element, progress ring is the second, video list card is the third. Schedule: session card stack with colored type badges is the visual structure; "Live Now" green Join button is the single most identifiable element when a session is live; on normal days, the time column and type badges create the rhythm. Profile: profile card is dominant. PASS (each screen has one clear anchor -- Schedule's anchor is the session cards themselves, optimized for scanning rather than emotional anchoring).

C3 -- Week-Grouped History: Week 6 submission and Week 6 feedback are in the same week's content, in vertically adjacent sections (Submission section above, Feedback section below). Visible in the same scroll without tapping. PASS.

C4 -- Timezone Always Displayed: Schedule tab displays timezone in header and on every session card. Today screen's session preview includes timezone. PASS.

C5 -- Standard Quranic Font on First Encounter: Onboarding step 3 sets mushaf font before the student ever sees Quranic text. Default is Amiri Quran. PASS.

Lifecycle Tests

L1 -- Pre-Semester State: Today screen shows: level (card 1), coach name and photo (card 2), days until semester start (header), and orientation video (primary action card). All four elements visible. PASS.

L2 -- Behind Test: Behind banner on Today: "You have [X] submissions to catch up on. You can submit up to 2 this week." Catch-up path is 1 tap ("Catch Up" button). Language is neutral. PASS.

L3 -- EOC Phase State: EOC card is the primary action on Today when eligible. "Begin Assessment" button reaches EOC submission in 2 taps. PASS.

L4 -- Recovery Test: Profile tab is 1 tap away from any screen. Help Center is 2 taps from any screen (Profile > Help Center). Coach messaging is 2 taps from any screen (Profile > Message Coach). PASS.

Notification Tests

V1 -- Notification Deep Links: Every notification type has a defined deep link target (specified in Section 4.6 and the Notification Sheet screen). Feedback notifications link to Learn > Week > Feedback. Session reminders link to Schedule > Session. PASS.

V2 -- Notification Content: Every notification includes: what happened (type), which submission/session (by week number and title), and when (relative timestamp). Specified in Notification Sheet content. PASS.


Capability Map Coverage Estimate

Section Capabilities Covered Total Coverage
2. Pre-Semester 7 of 8 (excluding 2A.1 external signup) 8 88%
3. Weekly Cycle 33 of 35 35 94%
4. End of Semester 4 of 4 4 100%
5. Year 2 1 of 4 (transition experience only; Year 2 interaction design deferred) 4 25%
6. Cross-Cutting 7 of 7 7 100%
TOTAL 52 of 58 58 90%

The architecture provides a defined home for 93% of all capabilities in the User Capability Map. The 4 uncovered items are: external signup (out of scope), elective selection for Year 2 (deferred to Year 2 design phase), and two minor enhancements (community board -- deprioritized per PM assessment that it "lacks vision"; detailed performance analytics -- available as a future enhancement to the Learn tab).


End of Phase 4 Architecture Specification