v2 Gap Analysis — Communication

Communication — V2 Review Gap Analysis

Source: BACKEND-RAMBLINGS.md lines 271–286

Spec: Communication is not a dedicated spec doc; scattered across:

Implementation: Two screens exist:


Current state summary

Communication infrastructure in the spec is minimal and fragmented. Email Management exists only to configure event-triggered email templates (on registration, week start, semester end, etc.) for a semester; it does NOT cover blast emails, scheduled sends, or custom recipient lists. Notifications is a single broadcast screen with no recipient filtering. No logs, announcement board, private messaging, or sequence preview. This section is net-new as a dedicated domain — stakeholder's six subsections are almost entirely absent from current spec and implementation.


Screens covered (proposed)


Automation Emails

Existing spec/impl coverage

Spec (04-semester-management.md Section 5):

Impl (email-management.tsx):

Stakeholder asks

  1. Set up automation emails triggered by events/dates
  2. Write formatted drafts with template variable references (semester start, end, etc.)
  3. Assign automations to a specific semester
  4. Sequence view: Search for a student by name, see all emails they will receive in the future with exact delivery dates
  5. View dates and exact emails for an example student

Ambiguous


Blast Emails

Existing spec/impl coverage

Spec: None. Not mentioned in 04-semester-management.md or elsewhere.

Impl: None.

Stakeholder asks

  1. Compose an email or choose from a template library
  2. Select recipients by:
    • Level (from level_tag table)
    • Course (mastery course)
    • Gender (from user profile)
    • Custom list (copy/paste from student reports)
  3. Create and save email templates for reuse
  4. Send immediately to selected list

Ambiguous


Push Notifications

Existing spec/impl coverage

Spec (10-admin-system.md Section 4):

Impl (notifications.tsx):

Stakeholder asks

  1. Draft a push notification message
  2. Select recipients by:
    • Level
    • Course/mastery course
    • Gender
    • Specific students only
    • Custom list
  3. Purpose: Inform students of urgent/time-sensitive program changes
  4. Send to selected students

Ambiguous


Announcement Board

Existing spec/impl coverage

Spec: None.

Impl: None.

Stakeholder asks

  1. Draft a message for the announcement board (visible in student and/or teacher app)
  2. Post to announcement board with recipient targeting:
    • All students
    • All teachers
    • By level
    • By mastery (course)
    • By course
    • By gender
  3. Purpose: Inform students/teachers of program updates, fixes, surveys, etc. (less urgent than push notifications)

Ambiguous


Private Messages

Existing spec/impl coverage

Spec: Partially in 10-admin-system.md Section 6 (Issue Queue):

Impl: Issue Queue exists (issue-queue.tsx) but is ticket/issue tracking, not messaging.

Stakeholder asks

  1. Admins send and receive private messages to/from students in a QF inbox
  2. Two-way conversation (admin initiates or replies)

Ambiguous


Communication Logs

Existing spec/impl coverage

Spec: None.

Impl: None.

Stakeholder asks

  1. View every message sent to students/teachers from the backend
  2. Filter by:
    • Message type (email, push notification, announcement)
    • Student/teacher name or email (search)
    • Date range
    • Message title or content (search)
  3. Flag messages that failed to deliver
  4. Show delivery status for each message

Ambiguous


Cross-cutting: Identity switching (send as TA or admin)

Stakeholder's ask (line 286):

"Any of the communication from the backend to the student can be done in the name of one of the TAs as well, or under the name of one of the admins."

Implications

  1. Identity selector: Every communication screen (blast email, push, announcement, private message) needs a "Send as" dropdown to pick the signing admin/TA.
  2. Display name: Student receives email/message/announcement with TA or admin name in sender field, not generic "QuranFlow Admin."
  3. Audit trail: Log must record which admin/TA composed AND which admin/TA is named as sender (may differ).
  4. TA awareness: Should the selected TA be notified that a message was sent in their name? Or is this silent?
  5. Reply handling: If student replies to an email sent "as TA Ahmed," does reply go to Ahmed's inbox, the original composer, or both?
  6. Permissions: Can all admins send as any TA? Or restricted by TA assignment / team?

Ambiguous


Summary