In-app Notification Centre
Feature Detail
Description
Dedicated Notifications tab (fifth item in the bottom navigation) presenting a chronological, filterable feed of all system notifications for the current user. Each item shows the notification type icon, a short summary, relative timestamp, and read/unread state. Tapping any item navigates to the related entity (assignment, certificate, activity) via deep link. Users can mark individual notifications as read or clear all. Unread count is shown as a badge on the tab icon. The feed is role-aware: coordinators see notifications about their peer mentors in addition to their own; org admins see org-wide alerts. The centre serves as a persistent audit trail for all automated alerts, ensuring nothing is lost if a device push notification is dismissed.
Analysis
Provides a reliable fallback for users who dismiss push notifications or have them disabled. Ensures coordinators and admins have a single place to review all follow-up obligations and system alerts, reducing the risk of missed actions.
Store all notifications in a Supabase notifications table (user_id, type, payload JSONB, read_at, created_at). Real-time subscription via Supabase Realtime for instant badge updates. Use BLoC for notification state. Ensure full screen reader accessibility: semantic list, announced unread count, focus management on mark-read action.
Components (210)
Shared Components
These components are reused across multiple features
User Interface (59)
Service Layer (52)
Data Layer (33)
Infrastructure (54)
User Stories (30)
As a As a Peer Mentor (Likeperson)
I want to receive an in-app notification when my pause status is activated or deactivated — whether by myself or by a coordinator — so that I have a clear record of each status change
So that I am always aware of my current active status and can take any required follow-up actions, such as confirming my return date or reviewing contacts that were reassigned during my pause
- Given a peer mentor's pause is activated (by themselves or a coordinator), when the pause event is saved, then a pause-notification-card appears in the Notification Centre.
- Given the pause notification card renders, when it is displayed, then it shows the pause start date, expected return date (if set), and the initiating party (self or coordinator name).
- Given a coordinator activated the pause, when the peer mentor views the notification, then the card text explicitly states 'Your coordinator [name] has placed you on pause.'
- +3 more
As a As a Peer Mentor (Likeperson)
I want to access a notification preferences screen from within the Notification Centre where I can toggle individual notification categories on or off and set my preferred delivery channel (in-app only vs. push + in-app)
So that I can control the volume and nature of the notifications I receive, preventing notification fatigue while ensuring I still receive the categories I consider important
- Given the peer mentor taps the preferences icon in the Notification Centre, when navigation resolves, then the notification-preferences-screen opens.
- Given the preferences screen is open, when it renders, then all notification categories applicable to the peer mentor role are listed with their current enabled/disabled toggle state.
- Given the peer mentor toggles a non-critical category off, when the change is saved, then subsequent notifications of that category are not created in the peer mentor's notification feed.
- +3 more
As a As a Peer Mentor (Likeperson)
I want to receive contextual scenario prompt notifications in my Notification Centre that suggest timely actions based on my activity patterns and contact situations
So that I receive personalised guidance at the right moment to improve the quality of my peer support without needing to remember every best-practice rule myself
- Given a scenario rule condition is met for a peer mentor, when the scenario evaluation edge function runs, then a scenario-prompt notification record is created in the database.
- Given a scenario notification exists, when the Notification Centre loads, then it renders as a scenario-prompt-notification-card with the scenario title and action text.
- Given the peer mentor taps the expansion area of the scenario card, when the sheet opens, then the scenario-prompt-detail-sheet displays the full scenario context and recommended action.
- +3 more
As a As a Coordinator
I want to receive an in-app notification when my pause status is activated or deactivated — whether by myself or by a coordinator — so that I have a clear record of each status change
So that I am always aware of my current active status and can take any required follow-up actions, such as confirming my return date or reviewing contacts that were reassigned during my pause
- Given a peer mentor's pause is activated (by themselves or a coordinator), when the pause event is saved, then a pause-notification-card appears in the Notification Centre.
- Given the pause notification card renders, when it is displayed, then it shows the pause start date, expected return date (if set), and the initiating party (self or coordinator name).
- Given a coordinator activated the pause, when the peer mentor views the notification, then the card text explicitly states 'Your coordinator [name] has placed you on pause.'
- +3 more
As a As a Coordinator
I want to access a notification preferences screen from within the Notification Centre where I can toggle individual notification categories on or off and set my preferred delivery channel (in-app only vs. push + in-app)
So that I can control the volume and nature of the notifications I receive, preventing notification fatigue while ensuring I still receive the categories I consider important
- Given the peer mentor taps the preferences icon in the Notification Centre, when navigation resolves, then the notification-preferences-screen opens.
- Given the preferences screen is open, when it renders, then all notification categories applicable to the peer mentor role are listed with their current enabled/disabled toggle state.
- Given the peer mentor toggles a non-critical category off, when the change is saved, then subsequent notifications of that category are not created in the peer mentor's notification feed.
- +3 more
As a As a Coordinator
I want to receive contextual scenario prompt notifications in my Notification Centre that suggest timely actions based on my activity patterns and contact situations
So that I receive personalised guidance at the right moment to improve the quality of my peer support without needing to remember every best-practice rule myself
- Given a scenario rule condition is met for a peer mentor, when the scenario evaluation edge function runs, then a scenario-prompt notification record is created in the database.
- Given a scenario notification exists, when the Notification Centre loads, then it renders as a scenario-prompt-notification-card with the scenario title and action text.
- Given the peer mentor taps the expansion area of the scenario card, when the sheet opens, then the scenario-prompt-detail-sheet displays the full scenario context and recommended action.
- +3 more
As a As a Organization Administrator
I want to receive an in-app notification when my pause status is activated or deactivated — whether by myself or by a coordinator — so that I have a clear record of each status change
So that I am always aware of my current active status and can take any required follow-up actions, such as confirming my return date or reviewing contacts that were reassigned during my pause
- Given a peer mentor's pause is activated (by themselves or a coordinator), when the pause event is saved, then a pause-notification-card appears in the Notification Centre.
- Given the pause notification card renders, when it is displayed, then it shows the pause start date, expected return date (if set), and the initiating party (self or coordinator name).
- Given a coordinator activated the pause, when the peer mentor views the notification, then the card text explicitly states 'Your coordinator [name] has placed you on pause.'
- +3 more
As a As a Organization Administrator
I want to access a notification preferences screen from within the Notification Centre where I can toggle individual notification categories on or off and set my preferred delivery channel (in-app only vs. push + in-app)
So that I can control the volume and nature of the notifications I receive, preventing notification fatigue while ensuring I still receive the categories I consider important
- Given the peer mentor taps the preferences icon in the Notification Centre, when navigation resolves, then the notification-preferences-screen opens.
- Given the preferences screen is open, when it renders, then all notification categories applicable to the peer mentor role are listed with their current enabled/disabled toggle state.
- Given the peer mentor toggles a non-critical category off, when the change is saved, then subsequent notifications of that category are not created in the peer mentor's notification feed.
- +3 more
As a As a Organization Administrator
I want to receive contextual scenario prompt notifications in my Notification Centre that suggest timely actions based on my activity patterns and contact situations
So that I receive personalised guidance at the right moment to improve the quality of my peer support without needing to remember every best-practice rule myself
- Given a scenario rule condition is met for a peer mentor, when the scenario evaluation edge function runs, then a scenario-prompt notification record is created in the database.
- Given a scenario notification exists, when the Notification Centre loads, then it renders as a scenario-prompt-notification-card with the scenario title and action text.
- Given the peer mentor taps the expansion area of the scenario card, when the sheet opens, then the scenario-prompt-detail-sheet displays the full scenario context and recommended action.
- +3 more
As a As a Peer Mentor (Likeperson)
I want to filter the notification list by category (e.g. Reminders, Certifications, Scenario Prompts, Pause Status) using a filter bar at the top of the Notification Centre
So that I can quickly find the specific type of update I am looking for without scrolling through unrelated notifications
- Given the notification centre is open, when the filter bar renders, then only notification categories relevant to the peer mentor role are shown as filter chips.
- Given the peer mentor taps a filter chip, when the selection is applied, then the list immediately updates to show only notifications matching that category.
- Given a filter is active and the peer mentor taps the same chip again, when deselection occurs, then the full unfiltered notification list is restored.
- +2 more
As a As a Peer Mentor (Likeperson)
I want to mark a notification as read either by tapping it or by swiping it, and to see the unread badge count on the navigation tab update in real time
So that my notification inbox accurately reflects only genuinely new information and I am not repeatedly distracted by alerts I have already seen
- Given an unread notification is tapped, when the notification detail screen opens, then the notification is marked as read in the database and the unread indicator is removed from the list item upon return.
- Given an unread notification is swiped with a mark-read gesture, when the gesture is completed, then the notification is marked read without navigating away, and the visual indicator updates immediately.
- Given one or more notifications are read, when the unread count changes, then the badge on the Notifications tab in the bottom navigation updates within one second.
- +2 more
As a As a Peer Mentor (Likeperson)
I want to receive a prominent in-app notification when my peer mentor certification is approaching its expiry date, and to be able to navigate directly to the renewal screen from that notification
So that I can renew my certification before it lapses, avoiding automatic removal from the organisation's active peer mentor roster and maintaining my ability to support contacts
- Given a peer mentor's certification will expire within the configured warning window, when the expiry check runs, then an expiry notification is created and appears in the Notification Centre.
- Given an expiry notification is displayed, when the notification renders, then it shows the certification name, expiry date, and days remaining with a warning-level colour accent.
- Given the 'Renew Now' button is tapped, when navigation resolves, then the record-renewal-screen opens pre-loaded with the expiring certification record.
- +2 more
As a As a Peer Mentor (Likeperson)
I want to tap any notification in the list and open a full notification detail view that shows the complete notification content, context, related entity links, and available actions
So that I can read the full content of longer notifications and take all available actions from a single screen without losing my place in the notification list
- Given a peer mentor taps a notification list item, when the detail view opens, then the full notification title, body text, timestamp, and type badge are rendered.
- Given the notification has a related entity, when the detail view renders, then an entity card linking to the related record is shown.
- Given the detail view is opened for an unread notification, when it renders, then the notification is automatically marked as read.
- +2 more
As a As a Peer Mentor (Likeperson)
I want to receive in-app reminder notifications when a contact I am assigned to has not been contacted within the configured follow-up period
So that I can proactively maintain regular contact with all my assigned contacts and avoid them falling through the cracks during busy periods
- Given a peer mentor has a contact whose last activity date exceeds the organisation-configured reminder threshold, when the reminder evaluation job runs, then a reminder notification record is created in the notifications table.
- Given a reminder notification exists, when the peer mentor opens the Notification Centre, then the notification appears as a reminder-notification-card showing the contact name and days overdue.
- Given the reminder card is visible, when the peer mentor taps the 'Log Activity' action button, then the activity registration wizard opens pre-filled with the overdue contact.
- +2 more
As a As a Coordinator
I want to filter the notification list by category (e.g. Reminders, Certifications, Scenario Prompts, Pause Status) using a filter bar at the top of the Notification Centre
So that I can quickly find the specific type of update I am looking for without scrolling through unrelated notifications
- Given the notification centre is open, when the filter bar renders, then only notification categories relevant to the peer mentor role are shown as filter chips.
- Given the peer mentor taps a filter chip, when the selection is applied, then the list immediately updates to show only notifications matching that category.
- Given a filter is active and the peer mentor taps the same chip again, when deselection occurs, then the full unfiltered notification list is restored.
- +2 more
As a As a Coordinator
I want to mark a notification as read either by tapping it or by swiping it, and to see the unread badge count on the navigation tab update in real time
So that my notification inbox accurately reflects only genuinely new information and I am not repeatedly distracted by alerts I have already seen
- Given an unread notification is tapped, when the notification detail screen opens, then the notification is marked as read in the database and the unread indicator is removed from the list item upon return.
- Given an unread notification is swiped with a mark-read gesture, when the gesture is completed, then the notification is marked read without navigating away, and the visual indicator updates immediately.
- Given one or more notifications are read, when the unread count changes, then the badge on the Notifications tab in the bottom navigation updates within one second.
- +2 more
As a As a Coordinator
I want to receive a prominent in-app notification when my peer mentor certification is approaching its expiry date, and to be able to navigate directly to the renewal screen from that notification
So that I can renew my certification before it lapses, avoiding automatic removal from the organisation's active peer mentor roster and maintaining my ability to support contacts
- Given a peer mentor's certification will expire within the configured warning window, when the expiry check runs, then an expiry notification is created and appears in the Notification Centre.
- Given an expiry notification is displayed, when the notification renders, then it shows the certification name, expiry date, and days remaining with a warning-level colour accent.
- Given the 'Renew Now' button is tapped, when navigation resolves, then the record-renewal-screen opens pre-loaded with the expiring certification record.
- +2 more
As a As a Coordinator
I want to tap any notification in the list and open a full notification detail view that shows the complete notification content, context, related entity links, and available actions
So that I can read the full content of longer notifications and take all available actions from a single screen without losing my place in the notification list
- Given a peer mentor taps a notification list item, when the detail view opens, then the full notification title, body text, timestamp, and type badge are rendered.
- Given the notification has a related entity, when the detail view renders, then an entity card linking to the related record is shown.
- Given the detail view is opened for an unread notification, when it renders, then the notification is automatically marked as read.
- +2 more
As a As a Coordinator
I want to receive in-app reminder notifications when a contact I am assigned to has not been contacted within the configured follow-up period
So that I can proactively maintain regular contact with all my assigned contacts and avoid them falling through the cracks during busy periods
- Given a peer mentor has a contact whose last activity date exceeds the organisation-configured reminder threshold, when the reminder evaluation job runs, then a reminder notification record is created in the notifications table.
- Given a reminder notification exists, when the peer mentor opens the Notification Centre, then the notification appears as a reminder-notification-card showing the contact name and days overdue.
- Given the reminder card is visible, when the peer mentor taps the 'Log Activity' action button, then the activity registration wizard opens pre-filled with the overdue contact.
- +2 more
As a As a Organization Administrator
I want to filter the notification list by category (e.g. Reminders, Certifications, Scenario Prompts, Pause Status) using a filter bar at the top of the Notification Centre
So that I can quickly find the specific type of update I am looking for without scrolling through unrelated notifications
- Given the notification centre is open, when the filter bar renders, then only notification categories relevant to the peer mentor role are shown as filter chips.
- Given the peer mentor taps a filter chip, when the selection is applied, then the list immediately updates to show only notifications matching that category.
- Given a filter is active and the peer mentor taps the same chip again, when deselection occurs, then the full unfiltered notification list is restored.
- +2 more
As a As a Organization Administrator
I want to mark a notification as read either by tapping it or by swiping it, and to see the unread badge count on the navigation tab update in real time
So that my notification inbox accurately reflects only genuinely new information and I am not repeatedly distracted by alerts I have already seen
- Given an unread notification is tapped, when the notification detail screen opens, then the notification is marked as read in the database and the unread indicator is removed from the list item upon return.
- Given an unread notification is swiped with a mark-read gesture, when the gesture is completed, then the notification is marked read without navigating away, and the visual indicator updates immediately.
- Given one or more notifications are read, when the unread count changes, then the badge on the Notifications tab in the bottom navigation updates within one second.
- +2 more
As a As a Organization Administrator
I want to receive a prominent in-app notification when my peer mentor certification is approaching its expiry date, and to be able to navigate directly to the renewal screen from that notification
So that I can renew my certification before it lapses, avoiding automatic removal from the organisation's active peer mentor roster and maintaining my ability to support contacts
- Given a peer mentor's certification will expire within the configured warning window, when the expiry check runs, then an expiry notification is created and appears in the Notification Centre.
- Given an expiry notification is displayed, when the notification renders, then it shows the certification name, expiry date, and days remaining with a warning-level colour accent.
- Given the 'Renew Now' button is tapped, when navigation resolves, then the record-renewal-screen opens pre-loaded with the expiring certification record.
- +2 more
As a As a Organization Administrator
I want to tap any notification in the list and open a full notification detail view that shows the complete notification content, context, related entity links, and available actions
So that I can read the full content of longer notifications and take all available actions from a single screen without losing my place in the notification list
- Given a peer mentor taps a notification list item, when the detail view opens, then the full notification title, body text, timestamp, and type badge are rendered.
- Given the notification has a related entity, when the detail view renders, then an entity card linking to the related record is shown.
- Given the detail view is opened for an unread notification, when it renders, then the notification is automatically marked as read.
- +2 more
As a As a Organization Administrator
I want to receive in-app reminder notifications when a contact I am assigned to has not been contacted within the configured follow-up period
So that I can proactively maintain regular contact with all my assigned contacts and avoid them falling through the cracks during busy periods
- Given a peer mentor has a contact whose last activity date exceeds the organisation-configured reminder threshold, when the reminder evaluation job runs, then a reminder notification record is created in the notifications table.
- Given a reminder notification exists, when the peer mentor opens the Notification Centre, then the notification appears as a reminder-notification-card showing the contact name and days overdue.
- Given the reminder card is visible, when the peer mentor taps the 'Log Activity' action button, then the activity registration wizard opens pre-filled with the overdue contact.
- +2 more
As a As a Peer Mentor (Likeperson)
I want to open the Notification Centre and see all my recent notifications in a single scrollable list, grouped by type and ordered by recency
So that I never miss an important update about my contacts, assignments, certifications, or activity reminders without having to navigate multiple screens
- Given the peer mentor opens the Notification Centre, when the screen loads, then the notification list is populated with notifications sorted by created_at descending.
- Given there are unread notifications, when the list renders, then unread items have a distinct visual indicator (e.g. bold title or accent dot) compared to read items.
- Given notifications arrive while the screen is open, when Supabase Realtime pushes a new notification record, then the new item appears at the top of the list without requiring a manual pull-to-refresh.
- +3 more
As a As a Peer Mentor (Likeperson)
I want to tap a notification and be taken directly to the screen or record it refers to — such as a contact detail, activity registration form, or certification renewal screen — without having to navigate there manually
So that I can take immediate action on a notification in as few taps as possible, reducing the friction between being alerted and completing the required task
- Given a notification with a contact deep link is tapped, when the handler resolves the route, then the contact detail screen for the referenced contact opens.
- Given a notification with a certification expiry deep link is tapped, when the route is resolved, then the certification renewal screen opens pre-loaded with the relevant certification record.
- Given a notification with an activity registration deep link is tapped, when the route is resolved, then the activity registration wizard opens with default values relevant to the notification context.
- +2 more
As a As a Coordinator
I want to open the Notification Centre and see all my recent notifications in a single scrollable list, grouped by type and ordered by recency
So that I never miss an important update about my contacts, assignments, certifications, or activity reminders without having to navigate multiple screens
- Given the peer mentor opens the Notification Centre, when the screen loads, then the notification list is populated with notifications sorted by created_at descending.
- Given there are unread notifications, when the list renders, then unread items have a distinct visual indicator (e.g. bold title or accent dot) compared to read items.
- Given notifications arrive while the screen is open, when Supabase Realtime pushes a new notification record, then the new item appears at the top of the list without requiring a manual pull-to-refresh.
- +3 more
As a As a Coordinator
I want to tap a notification and be taken directly to the screen or record it refers to — such as a contact detail, activity registration form, or certification renewal screen — without having to navigate there manually
So that I can take immediate action on a notification in as few taps as possible, reducing the friction between being alerted and completing the required task
- Given a notification with a contact deep link is tapped, when the handler resolves the route, then the contact detail screen for the referenced contact opens.
- Given a notification with a certification expiry deep link is tapped, when the route is resolved, then the certification renewal screen opens pre-loaded with the relevant certification record.
- Given a notification with an activity registration deep link is tapped, when the route is resolved, then the activity registration wizard opens with default values relevant to the notification context.
- +2 more
As a As a Organization Administrator
I want to open the Notification Centre and see all my recent notifications in a single scrollable list, grouped by type and ordered by recency
So that I never miss an important update about my contacts, assignments, certifications, or activity reminders without having to navigate multiple screens
- Given the peer mentor opens the Notification Centre, when the screen loads, then the notification list is populated with notifications sorted by created_at descending.
- Given there are unread notifications, when the list renders, then unread items have a distinct visual indicator (e.g. bold title or accent dot) compared to read items.
- Given notifications arrive while the screen is open, when Supabase Realtime pushes a new notification record, then the new item appears at the top of the list without requiring a manual pull-to-refresh.
- +3 more
As a As a Organization Administrator
I want to tap a notification and be taken directly to the screen or record it refers to — such as a contact detail, activity registration form, or certification renewal screen — without having to navigate there manually
So that I can take immediate action on a notification in as few taps as possible, reducing the friction between being alerted and completing the required task
- Given a notification with a contact deep link is tapped, when the handler resolves the route, then the contact detail screen for the referenced contact opens.
- Given a notification with a certification expiry deep link is tapped, when the route is resolved, then the certification renewal screen opens pre-loaded with the relevant certification record.
- Given a notification with an activity registration deep link is tapped, when the route is resolved, then the activity registration wizard opens with default values relevant to the notification context.
- +2 more