Page: Notifications

Code: NOTF Route: /notifications Access: Authenticated Priority: P0 Status: In Scope

Purpose

Display all user notifications in one place, allowing users to view, mark as read, and act on notifications.


Connections

Incoming (users arrive from)

Source Trigger Notes
Nav Notification bell icon Global navigation
Any page Bell with badge Unread indicator

Outgoing (users navigate to)

Target Trigger Notes
SROM Session notification click Join upcoming session
MSGS Message notification click View message thread
SDSH/TDSH/CDSH Approval notification click View pending items
CDET Course notification click View course
PROF Follower notification click View who followed
SETT "Notification Settings" Manage preferences

Data Requirements

Entity Fields Used Purpose
notifications id, type, title, body, action_url, is_read, created_at Notification list
users (related) name, avatar For follow/message notifications

Sections

Header

  • Page title: "Notifications"
  • "Mark All as Read" button
  • "Settings" link → SETT (notifications section)

Filter/Tabs (Optional)

  • All / Unread
  • By type: Sessions, Messages, Courses, Social

Notification List

  • Chronological list, newest first
  • Each notification shows:
  • Click → navigate to action_url
  • Swipe to mark read/delete (mobile)

Notification Types

  • | Type | Icon | Example | |------|------|---------| | session_reminder | Calendar | "Your session starts in 15 minutes" | | session_booked | Calendar+ | "[Student] booked a session with you" | | new_message | Message | "New message from [Name]" | | course_update | Book | "[Course] has new content" | | certificate_earned | Award | "You earned a certificate!" | | st_application | User+ | "[Name] applied to be an ST" | | cert_request | Clipboard | "[ST] recommends [Student] for certification" | | new_follower | User | "[Name] started following you" | | payment | Dollar | "Payout of $X processed" | | system | Info | Platform announcements |

Empty State

  • "No notifications yet"
  • "You're all caught up!"

Load More / Infinite Scroll

  • Pagination or infinite scroll for older notifications

User Stories Fulfilled

  • US-P017: View all notifications
  • US-P018: Manage notification preferences (via link to SETT)

States & Variations

State Description
Has Unread Unread items highlighted, badge in nav
All Read No badge, items in normal style
Empty No notifications, encouraging message
Filtered Showing specific type only

Mobile Considerations

  • Full-screen list
  • Pull-to-refresh
  • Swipe gestures for mark read / delete
  • Notification bell in bottom nav

Error Handling

Error Display
Load fails "Unable to load notifications. [Retry]"
Mark read fails Toast: "Unable to update. Try again."

Analytics Events

Event Trigger Data
`page_view` Page load unread_count
`notification_clicked` Notification clicked notification_type, notification_id
`mark_all_read` Mark all clicked count_marked
`mark_read` Single marked read notification_id
`notification_deleted` Deleted notification_id

API Calls

Endpoint When Purpose
`GET /api/notifications` Page load List notifications
`GET /api/notifications?unread=true` Filter Unread only
`GET /api/notifications?type=...` Filter By notification type
`PUT /api/notifications/:id/read` Click notification Mark single as read
`PUT /api/notifications/read-all` Mark all clicked Mark all as read
`DELETE /api/notifications/:id` Delete/swipe Remove notification
`GET /api/notifications/count` Nav badge Unread count

Notes

  • Real-time updates: New notifications appear without refresh
  • Push notification bridge: In-app notifications mirror push
  • Consider notification grouping (3 new followers → "3 people followed you")
  • Retention: Auto-delete notifications older than 30 days?