Contact List Management
Feature Detail
Description
Provides role-specific contact list views for coordinators, org admins, and peer mentors. Each role sees a tailored subset of contacts relevant to their responsibilities, with filtering and switching between contact types (members, peer mentors). The list supports search by name and notes, which is a MUST HAVE across all organizations. The view includes contact cards and peer mentor cards as reusable widgets, and a view switcher (notably for Barnekreftforeningen) to toggle between contact and peer mentor views. All data is fetched from Supabase with role-based access control enforced at the query level.
Analysis
Central to daily coordinator and peer mentor workflows. Without an accessible contact list, coordinators cannot manage assignments or track outreach. Reduces friction compared to paper lists and spreadsheets currently in use.
Use Riverpod providers for role-aware contact fetching. Implement shared ContactCard and PeerMentorCard widgets with design token styling. Search must be local or debounced Supabase query. WCAG 2.2 AA contrast required on all card text.
Components (203)
Shared Components
These components are reused across multiple features
User Interface (59)
Service Layer (52)
Data Layer (33)
Infrastructure (54)
User Stories (24)
As a As a Peer Mentor (Likeperson)
I want to view and edit a peer mentor's chapter affiliations, including adding or removing them from chapters
So that I can correctly manage mentors who operate across multiple chapters and prevent cross-chapter double-assignment errors
- Given a peer mentor belongs to multiple chapters, when I view their detail screen, then all chapter affiliations are listed in the chapter affiliations panel
- Given I am editing a peer mentor's affiliations, when I add a new chapter, then the assignment is saved and immediately reflected in the affiliations panel
- Given a mentor has activities recorded in multiple chapters, when I view the chapter affiliations panel, then a cross-chapter activity warning is surfaced if duplicate activities are detected
- +2 more
As a As a Peer Mentor (Likeperson)
I want to switch from the list view to a map view showing peer mentors' locations with filtering options
So that I can make geographically optimal assignment decisions, especially for large regions where travel distance is a significant factor
- Given I am on the contact list screen, when I tap the map view toggle, then the list is replaced by an interactive map showing mentor location markers
- Given the map is displayed, when I tap a mentor marker, then a mentor info popup appears showing the mentor's name, certification status, and an action button to view their full profile
- Given a mentor has not granted location consent, when the map loads, then no marker is shown for that mentor and their location is not requested
- +2 more
As a As a Coordinator
I want to view and edit a peer mentor's chapter affiliations, including adding or removing them from chapters
So that I can correctly manage mentors who operate across multiple chapters and prevent cross-chapter double-assignment errors
- Given a peer mentor belongs to multiple chapters, when I view their detail screen, then all chapter affiliations are listed in the chapter affiliations panel
- Given I am editing a peer mentor's affiliations, when I add a new chapter, then the assignment is saved and immediately reflected in the affiliations panel
- Given a mentor has activities recorded in multiple chapters, when I view the chapter affiliations panel, then a cross-chapter activity warning is surfaced if duplicate activities are detected
- +2 more
As a As a Coordinator
I want to switch from the list view to a map view showing peer mentors' locations with filtering options
So that I can make geographically optimal assignment decisions, especially for large regions where travel distance is a significant factor
- Given I am on the contact list screen, when I tap the map view toggle, then the list is replaced by an interactive map showing mentor location markers
- Given the map is displayed, when I tap a mentor marker, then a mentor info popup appears showing the mentor's name, certification status, and an action button to view their full profile
- Given a mentor has not granted location consent, when the map loads, then no marker is shown for that mentor and their location is not requested
- +2 more
As a As a Organization Administrator
I want to view and edit a peer mentor's chapter affiliations, including adding or removing them from chapters
So that I can correctly manage mentors who operate across multiple chapters and prevent cross-chapter double-assignment errors
- Given a peer mentor belongs to multiple chapters, when I view their detail screen, then all chapter affiliations are listed in the chapter affiliations panel
- Given I am editing a peer mentor's affiliations, when I add a new chapter, then the assignment is saved and immediately reflected in the affiliations panel
- Given a mentor has activities recorded in multiple chapters, when I view the chapter affiliations panel, then a cross-chapter activity warning is surfaced if duplicate activities are detected
- +2 more
As a As a Organization Administrator
I want to switch from the list view to a map view showing peer mentors' locations with filtering options
So that I can make geographically optimal assignment decisions, especially for large regions where travel distance is a significant factor
- Given I am on the contact list screen, when I tap the map view toggle, then the list is replaced by an interactive map showing mentor location markers
- Given the map is displayed, when I tap a mentor marker, then a mentor info popup appears showing the mentor's name, certification status, and an action button to view their full profile
- Given a mentor has not granted location consent, when the map loads, then no marker is shown for that mentor and their location is not requested
- +2 more
As a As a Peer Mentor (Likeperson)
I want to search for contacts and peer mentors by name, phone number, or other attributes with real-time results
So that I can quickly locate a specific person without scrolling through long lists, especially when handling urgent assignment requests
- Given I am on the contact list screen, when I tap the search bar and type at least 2 characters, then the list filters to show matching contacts within 400ms
- Given I am searching for a contact, when the search debounce triggers, then only one API call is made per debounce interval rather than one call per keystroke
- Given I am offline, when I search for a contact, then the search queries the local offline cache and displays cached results with an offline indicator
- +2 more
As a As a Peer Mentor (Likeperson)
I want to edit a contact's profile information including personal details, chapter affiliations, and notes
So that I can keep contact records accurate and up to date without needing to request changes through a central administrator
- Given I am on the contact detail screen, when I tap the edit button, then the edit contact screen opens pre-populated with the contact's current information
- Given I am editing a contact, when I clear a required field and attempt to save, then I see an inline validation error message and the save button is disabled
- Given I submit valid edits, when the save operation completes successfully, then I am returned to the contact detail screen which immediately shows the updated information
- +2 more
As a As a Peer Mentor (Likeperson)
I want to place a peer mentor on temporary pause or reactivate them, with automated notifications and status tracking
So that I can manage mentors who are temporarily unavailable without removing them from the system, and ensure they are hidden from public listings while paused
- Given I am viewing a peer mentor's detail screen, when I tap the pause/reactivate toggle, then a confirmation dialog is shown explaining the consequences of pausing
- Given I confirm a pause, when the pause is saved, then the mentor's status banner updates to show paused state with the expected return date if set
- Given a mentor is paused, when another coordinator views the contact list, then the mentor is visually marked as paused and excluded from available mentor selections
- +2 more
As a As a Peer Mentor (Likeperson)
I want to open a peer mentor's dedicated detail screen showing their certification status, assigned contacts list, and activity summary
So that I can assess a peer mentor's current capacity, certification validity, and workload before assigning new contacts or initiating a pause
- Given I open a peer mentor's detail screen, when the data loads, then I see a profile header, certification status badge, assigned contacts list, and activity summary panel
- Given the peer mentor's certification expires within 30 days, when I view their detail screen, then a certification alert banner is prominently displayed at the top of the screen
- Given the peer mentor has an expired certification, when I view their detail screen, then the certification status badge shows a red expired state and the mentor is visually distinguished from active mentors
- +2 more
As a As a Coordinator
I want to search for contacts and peer mentors by name, phone number, or other attributes with real-time results
So that I can quickly locate a specific person without scrolling through long lists, especially when handling urgent assignment requests
- Given I am on the contact list screen, when I tap the search bar and type at least 2 characters, then the list filters to show matching contacts within 400ms
- Given I am searching for a contact, when the search debounce triggers, then only one API call is made per debounce interval rather than one call per keystroke
- Given I am offline, when I search for a contact, then the search queries the local offline cache and displays cached results with an offline indicator
- +2 more
As a As a Coordinator
I want to edit a contact's profile information including personal details, chapter affiliations, and notes
So that I can keep contact records accurate and up to date without needing to request changes through a central administrator
- Given I am on the contact detail screen, when I tap the edit button, then the edit contact screen opens pre-populated with the contact's current information
- Given I am editing a contact, when I clear a required field and attempt to save, then I see an inline validation error message and the save button is disabled
- Given I submit valid edits, when the save operation completes successfully, then I am returned to the contact detail screen which immediately shows the updated information
- +2 more
As a As a Coordinator
I want to place a peer mentor on temporary pause or reactivate them, with automated notifications and status tracking
So that I can manage mentors who are temporarily unavailable without removing them from the system, and ensure they are hidden from public listings while paused
- Given I am viewing a peer mentor's detail screen, when I tap the pause/reactivate toggle, then a confirmation dialog is shown explaining the consequences of pausing
- Given I confirm a pause, when the pause is saved, then the mentor's status banner updates to show paused state with the expected return date if set
- Given a mentor is paused, when another coordinator views the contact list, then the mentor is visually marked as paused and excluded from available mentor selections
- +2 more
As a As a Coordinator
I want to open a peer mentor's dedicated detail screen showing their certification status, assigned contacts list, and activity summary
So that I can assess a peer mentor's current capacity, certification validity, and workload before assigning new contacts or initiating a pause
- Given I open a peer mentor's detail screen, when the data loads, then I see a profile header, certification status badge, assigned contacts list, and activity summary panel
- Given the peer mentor's certification expires within 30 days, when I view their detail screen, then a certification alert banner is prominently displayed at the top of the screen
- Given the peer mentor has an expired certification, when I view their detail screen, then the certification status badge shows a red expired state and the mentor is visually distinguished from active mentors
- +2 more
As a As a Organization Administrator
I want to search for contacts and peer mentors by name, phone number, or other attributes with real-time results
So that I can quickly locate a specific person without scrolling through long lists, especially when handling urgent assignment requests
- Given I am on the contact list screen, when I tap the search bar and type at least 2 characters, then the list filters to show matching contacts within 400ms
- Given I am searching for a contact, when the search debounce triggers, then only one API call is made per debounce interval rather than one call per keystroke
- Given I am offline, when I search for a contact, then the search queries the local offline cache and displays cached results with an offline indicator
- +2 more
As a As a Organization Administrator
I want to edit a contact's profile information including personal details, chapter affiliations, and notes
So that I can keep contact records accurate and up to date without needing to request changes through a central administrator
- Given I am on the contact detail screen, when I tap the edit button, then the edit contact screen opens pre-populated with the contact's current information
- Given I am editing a contact, when I clear a required field and attempt to save, then I see an inline validation error message and the save button is disabled
- Given I submit valid edits, when the save operation completes successfully, then I am returned to the contact detail screen which immediately shows the updated information
- +2 more
As a As a Organization Administrator
I want to place a peer mentor on temporary pause or reactivate them, with automated notifications and status tracking
So that I can manage mentors who are temporarily unavailable without removing them from the system, and ensure they are hidden from public listings while paused
- Given I am viewing a peer mentor's detail screen, when I tap the pause/reactivate toggle, then a confirmation dialog is shown explaining the consequences of pausing
- Given I confirm a pause, when the pause is saved, then the mentor's status banner updates to show paused state with the expected return date if set
- Given a mentor is paused, when another coordinator views the contact list, then the mentor is visually marked as paused and excluded from available mentor selections
- +2 more
As a As a Organization Administrator
I want to open a peer mentor's dedicated detail screen showing their certification status, assigned contacts list, and activity summary
So that I can assess a peer mentor's current capacity, certification validity, and workload before assigning new contacts or initiating a pause
- Given I open a peer mentor's detail screen, when the data loads, then I see a profile header, certification status badge, assigned contacts list, and activity summary panel
- Given the peer mentor's certification expires within 30 days, when I view their detail screen, then a certification alert banner is prominently displayed at the top of the screen
- Given the peer mentor has an expired certification, when I view their detail screen, then the certification status badge shows a red expired state and the mentor is visually distinguished from active mentors
- +2 more
As a As a Peer Mentor (Likeperson)
I want to view a organized list of all contacts and peer mentors within my chapter with role-specific filtering
So that I can quickly identify who is active, available, or needs follow-up without manually searching through spreadsheets
- Given I am logged in as a coordinator, when I navigate to the Contacts tab, then I see a paginated list of all contacts within my chapter
- Given I am on the contact list screen, when I tap the view switcher, then the list toggles between a contacts view showing all contacts and a peer mentors view showing only peer mentors
- Given the contact list is loaded, when I view each contact card, then I see the contact name, assignment status indicator, and any active pause or certification warning badges
- +2 more
As a As a Peer Mentor (Likeperson)
I want to open a contact's detail page showing their full profile, assignment history, chapter affiliations, and activity log
So that I have all the context needed to make informed decisions about assigning them to new peer mentor activities or follow-up tasks
- Given I tap a contact card, when the detail screen opens, then I see the contact's full name, phone, email, organization role, and assignment status
- Given a contact has affiliations in multiple chapters, when I view their detail screen, then I see multi-chapter affiliation chips for each chapter they belong to
- Given the contact has encrypted sensitive fields, when I attempt to view those fields, then I am first shown a sensitive field warning dialog before the decrypted content is displayed
- +2 more
As a As a Coordinator
I want to view a organized list of all contacts and peer mentors within my chapter with role-specific filtering
So that I can quickly identify who is active, available, or needs follow-up without manually searching through spreadsheets
- Given I am logged in as a coordinator, when I navigate to the Contacts tab, then I see a paginated list of all contacts within my chapter
- Given I am on the contact list screen, when I tap the view switcher, then the list toggles between a contacts view showing all contacts and a peer mentors view showing only peer mentors
- Given the contact list is loaded, when I view each contact card, then I see the contact name, assignment status indicator, and any active pause or certification warning badges
- +2 more
As a As a Coordinator
I want to open a contact's detail page showing their full profile, assignment history, chapter affiliations, and activity log
So that I have all the context needed to make informed decisions about assigning them to new peer mentor activities or follow-up tasks
- Given I tap a contact card, when the detail screen opens, then I see the contact's full name, phone, email, organization role, and assignment status
- Given a contact has affiliations in multiple chapters, when I view their detail screen, then I see multi-chapter affiliation chips for each chapter they belong to
- Given the contact has encrypted sensitive fields, when I attempt to view those fields, then I am first shown a sensitive field warning dialog before the decrypted content is displayed
- +2 more
As a As a Organization Administrator
I want to view a organized list of all contacts and peer mentors within my chapter with role-specific filtering
So that I can quickly identify who is active, available, or needs follow-up without manually searching through spreadsheets
- Given I am logged in as a coordinator, when I navigate to the Contacts tab, then I see a paginated list of all contacts within my chapter
- Given I am on the contact list screen, when I tap the view switcher, then the list toggles between a contacts view showing all contacts and a peer mentors view showing only peer mentors
- Given the contact list is loaded, when I view each contact card, then I see the contact name, assignment status indicator, and any active pause or certification warning badges
- +2 more
As a As a Organization Administrator
I want to open a contact's detail page showing their full profile, assignment history, chapter affiliations, and activity log
So that I have all the context needed to make informed decisions about assigning them to new peer mentor activities or follow-up tasks
- Given I tap a contact card, when the detail screen opens, then I see the contact's full name, phone, email, organization role, and assignment status
- Given a contact has affiliations in multiple chapters, when I view their detail screen, then I see multi-chapter affiliation chips for each chapter they belong to
- Given the contact has encrypted sensitive fields, when I attempt to view those fields, then I am first shown a sensitive field warning dialog before the decrypted content is displayed
- +2 more