low complexity high priority must have MVP extracted App Shell & Core Infrastructure Confidence: 100%
4
Components
0
Shared
19
User Stories
Yes
Analyzed

Description

The Settings & Preferences feature provides a centralized screen where users can configure application-level preferences including notification settings, accessibility options, language, and account management actions. Settings are organized into logical card-based groups using the design token system for consistent styling. The screen is accessible from the hamburger menu on all tabs, ensuring users always have a clear path to personalization and account control regardless of their current context in the app.

Analysis

Business Value

User control over preferences is a fundamental usability requirement and directly supports the accessibility mandate shared by all three organizations. Peer mentors with visual or cognitive impairments must be able to adjust font scale, contrast, and notification behavior from a single, easily discoverable location. Providing logout and account management within Settings reduces support burden and empowers users. The settings architecture also enables per-organization label customization (org labels system), which is required for NHF, Blindeforbundet, and HLF to each use their own terminology throughout the app.

Implementation Notes

Implemented as a Flutter screen with card-based sections using shared AppSettingsCard widgets driven by design tokens. Preferences are persisted locally using shared_preferences for immediate UI response and synced to the Supabase user profile for cross-device consistency via Riverpod async notifiers. The screen integrates with the accessibility_preferences and theme_configs tables in Supabase. Feature flags per organization are loaded at session start and stored in a Riverpod provider, enabling org-specific settings visibility. All interactive elements meet WCAG 2.2 AA touch target size (48×48dp minimum).

Dependencies

navigation-shelldesign-token-systemsupabase-backend-core

Definition of Done

Settings screen accessible from hamburger menu on all tabs
Preferences persisted locally and synced to Supabase
Logout clears session and redirects to login
Font scale and contrast settings apply app-wide immediately
Org-specific labels reflected in settings UI
All settings items meet WCAG 2.2 AA touch target requirements

User Stories (19)

Set App Language Preference
medium 2 pts

As a As a user

I want I want to select my preferred app language from the Settings screen

So that So that I can use the app in the language I am most comfortable with, improving comprehension and reducing input errors

Acceptance Criteria
  • Given I open the language settings card, when the screen loads, then I see the available language options with the current language pre-selected
  • Given I select a different language, when I confirm the selection, then the app UI switches to the selected language immediately without requiring a restart
  • Given I change the language preference, when I sign into the app on another device, then the same language preference is applied on that device
  • +1 more
View Full Story →
Preferences Sync Across Devices
medium 3 pts

As a As a user

I want I want my saved preferences to be automatically available when I sign into the app on a different device

So that So that I do not need to reconfigure my settings every time I switch between devices or reinstall the app

Acceptance Criteria
  • Given I have configured notification preferences on device A, when I sign into the app on device B, then the same notification preferences are applied without manual reconfiguration
  • Given the app loads after sign-in and the device is online, when preferences are fetched from Supabase, then the remote preferences take precedence over any locally cached values
  • Given the app loads after sign-in and the device is offline, when the remote fetch fails, then locally cached preferences are applied and a background sync is scheduled for when connectivity is restored
  • +2 more
View Full Story →
Set App Language Preference
medium 2 pts

As a As a user

I want I want to select my preferred app language from the Settings screen

So that So that I can use the app in the language I am most comfortable with, improving comprehension and reducing input errors

Acceptance Criteria
  • Given I open the language settings card, when the screen loads, then I see the available language options with the current language pre-selected
  • Given I select a different language, when I confirm the selection, then the app UI switches to the selected language immediately without requiring a restart
  • Given I change the language preference, when I sign into the app on another device, then the same language preference is applied on that device
  • +1 more
View Full Story →
Preferences Sync Across Devices
medium 3 pts

As a As a user

I want I want my saved preferences to be automatically available when I sign into the app on a different device

So that So that I do not need to reconfigure my settings every time I switch between devices or reinstall the app

Acceptance Criteria
  • Given I have configured notification preferences on device A, when I sign into the app on device B, then the same notification preferences are applied without manual reconfiguration
  • Given the app loads after sign-in and the device is online, when preferences are fetched from Supabase, then the remote preferences take precedence over any locally cached values
  • Given the app loads after sign-in and the device is offline, when the remote fetch fails, then locally cached preferences are applied and a background sync is scheduled for when connectivity is restored
  • +2 more
View Full Story →
Set App Language Preference
medium 2 pts

As a As a user

I want I want to select my preferred app language from the Settings screen

So that So that I can use the app in the language I am most comfortable with, improving comprehension and reducing input errors

Acceptance Criteria
  • Given I open the language settings card, when the screen loads, then I see the available language options with the current language pre-selected
  • Given I select a different language, when I confirm the selection, then the app UI switches to the selected language immediately without requiring a restart
  • Given I change the language preference, when I sign into the app on another device, then the same language preference is applied on that device
  • +1 more
View Full Story →
Preferences Sync Across Devices
medium 3 pts

As a As a user

I want I want my saved preferences to be automatically available when I sign into the app on a different device

So that So that I do not need to reconfigure my settings every time I switch between devices or reinstall the app

Acceptance Criteria
  • Given I have configured notification preferences on device A, when I sign into the app on device B, then the same notification preferences are applied without manual reconfiguration
  • Given the app loads after sign-in and the device is online, when preferences are fetched from Supabase, then the remote preferences take precedence over any locally cached values
  • Given the app loads after sign-in and the device is offline, when the remote fetch fails, then locally cached preferences are applied and a background sync is scheduled for when connectivity is restored
  • +2 more
View Full Story →
View Organization-Specific Settings Sections
medium 3 pts

As a As a Organization Administrator

I want I want to see settings sections that are specific to my organization's configuration, including org-label customization and integration status shortcuts

So that So that I can quickly access organization-level configuration options relevant to my role without navigating through sections that do not apply to my organization

Acceptance Criteria
  • Given I am an Organization Administrator and my organization has org-label customization enabled, when I open Settings, then a settings card for organization labels is visible
  • Given I am a Peer Mentor or Coordinator, when I open Settings, then organization-administration-specific settings cards (such as org labels, integration shortcuts) are not shown
  • Given organization feature flags are loaded at session start, when the Settings screen renders, then the visible settings sections match the enabled features for my organization without any additional network request
  • +2 more
View Full Story →
Sign Out of Account Securely
high 2 pts

As a As a user

I want I want to sign out of my account from the Settings screen

So that So that I can securely end my session, especially when using a shared or public device

Acceptance Criteria
  • Given I tap the sign-out action in Settings, when the action is triggered, then a confirmation dialog appears asking me to confirm sign-out
  • Given I confirm sign-out, when the action completes, then my Supabase session is invalidated and I am navigated to the login screen
  • Given I confirm sign-out, when the action completes, then no sensitive user data remains accessible in the app without re-authentication
  • +2 more
View Full Story →
Navigate to Accessibility Settings from Settings Screen
high 2 pts

As a As a user

I want I want to find and open accessibility configuration options directly from the Settings screen

So that So that I can adjust font size, contrast, and other accessibility options from a single, easily discoverable location without searching through the app

Acceptance Criteria
  • Given I open the Settings screen, when I view the accessibility card, then I can see a summary of my currently active accessibility settings (font size level, contrast mode status)
  • Given I tap the accessibility card, when the navigation occurs, then I am taken to the full accessibility settings screen
  • Given the Settings screen is rendered with an active large-text or high-contrast preference, when the screen displays, then the Settings screen itself respects those preferences (font size, contrast)
  • +2 more
View Full Story →
Configure Push Notification Preferences
high 3 pts

As a As a user

I want I want to configure which types of push notifications I receive and how frequently

So that So that I can control notification noise while ensuring I still receive alerts that matter to my role

Acceptance Criteria
  • Given I open the notifications settings section, when the screen loads, then I see a list of toggleable notification categories relevant to my role
  • Given I toggle a notification type off, when the change is saved, then I no longer receive push notifications of that type
  • Given I toggle a notification type on, when the change is saved, then push notifications of that type resume immediately
  • +2 more
View Full Story →
Sign Out of Account Securely
high 2 pts

As a As a user

I want I want to sign out of my account from the Settings screen

So that So that I can securely end my session, especially when using a shared or public device

Acceptance Criteria
  • Given I tap the sign-out action in Settings, when the action is triggered, then a confirmation dialog appears asking me to confirm sign-out
  • Given I confirm sign-out, when the action completes, then my Supabase session is invalidated and I am navigated to the login screen
  • Given I confirm sign-out, when the action completes, then no sensitive user data remains accessible in the app without re-authentication
  • +2 more
View Full Story →
Navigate to Accessibility Settings from Settings Screen
high 2 pts

As a As a user

I want I want to find and open accessibility configuration options directly from the Settings screen

So that So that I can adjust font size, contrast, and other accessibility options from a single, easily discoverable location without searching through the app

Acceptance Criteria
  • Given I open the Settings screen, when I view the accessibility card, then I can see a summary of my currently active accessibility settings (font size level, contrast mode status)
  • Given I tap the accessibility card, when the navigation occurs, then I am taken to the full accessibility settings screen
  • Given the Settings screen is rendered with an active large-text or high-contrast preference, when the screen displays, then the Settings screen itself respects those preferences (font size, contrast)
  • +2 more
View Full Story →
Configure Push Notification Preferences
high 3 pts

As a As a user

I want I want to configure which types of push notifications I receive and how frequently

So that So that I can control notification noise while ensuring I still receive alerts that matter to my role

Acceptance Criteria
  • Given I open the notifications settings section, when the screen loads, then I see a list of toggleable notification categories relevant to my role
  • Given I toggle a notification type off, when the change is saved, then I no longer receive push notifications of that type
  • Given I toggle a notification type on, when the change is saved, then push notifications of that type resume immediately
  • +2 more
View Full Story →
Sign Out of Account Securely
high 2 pts

As a As a user

I want I want to sign out of my account from the Settings screen

So that So that I can securely end my session, especially when using a shared or public device

Acceptance Criteria
  • Given I tap the sign-out action in Settings, when the action is triggered, then a confirmation dialog appears asking me to confirm sign-out
  • Given I confirm sign-out, when the action completes, then my Supabase session is invalidated and I am navigated to the login screen
  • Given I confirm sign-out, when the action completes, then no sensitive user data remains accessible in the app without re-authentication
  • +2 more
View Full Story →
Navigate to Accessibility Settings from Settings Screen
high 2 pts

As a As a user

I want I want to find and open accessibility configuration options directly from the Settings screen

So that So that I can adjust font size, contrast, and other accessibility options from a single, easily discoverable location without searching through the app

Acceptance Criteria
  • Given I open the Settings screen, when I view the accessibility card, then I can see a summary of my currently active accessibility settings (font size level, contrast mode status)
  • Given I tap the accessibility card, when the navigation occurs, then I am taken to the full accessibility settings screen
  • Given the Settings screen is rendered with an active large-text or high-contrast preference, when the screen displays, then the Settings screen itself respects those preferences (font size, contrast)
  • +2 more
View Full Story →
Configure Push Notification Preferences
high 3 pts

As a As a user

I want I want to configure which types of push notifications I receive and how frequently

So that So that I can control notification noise while ensuring I still receive alerts that matter to my role

Acceptance Criteria
  • Given I open the notifications settings section, when the screen loads, then I see a list of toggleable notification categories relevant to my role
  • Given I toggle a notification type off, when the change is saved, then I no longer receive push notifications of that type
  • Given I toggle a notification type on, when the change is saved, then push notifications of that type resume immediately
  • +2 more
View Full Story →
Access Settings Screen from Any Tab
critical 2 pts

As a As a user

I want I want to open the Settings screen by tapping the hamburger menu from any tab in the app

So that So that I can always reach my preferences and account controls regardless of where I am in the app

Acceptance Criteria
  • Given I am on any tab of the app, when I tap the hamburger menu icon, then the Settings screen opens without navigating away from my current tab state
  • Given the Settings screen is open, when I view the screen, then settings are grouped into logical card sections (notifications, accessibility, language, account management)
  • Given the Settings screen is open, when I interact with any tappable element, then the touch target is at least 48×48dp in all cases
  • +2 more
View Full Story →
Access Settings Screen from Any Tab
critical 2 pts

As a As a user

I want I want to open the Settings screen by tapping the hamburger menu from any tab in the app

So that So that I can always reach my preferences and account controls regardless of where I am in the app

Acceptance Criteria
  • Given I am on any tab of the app, when I tap the hamburger menu icon, then the Settings screen opens without navigating away from my current tab state
  • Given the Settings screen is open, when I view the screen, then settings are grouped into logical card sections (notifications, accessibility, language, account management)
  • Given the Settings screen is open, when I interact with any tappable element, then the touch target is at least 48×48dp in all cases
  • +2 more
View Full Story →
Access Settings Screen from Any Tab
critical 2 pts

As a As a user

I want I want to open the Settings screen by tapping the hamburger menu from any tab in the app

So that So that I can always reach my preferences and account controls regardless of where I am in the app

Acceptance Criteria
  • Given I am on any tab of the app, when I tap the hamburger menu icon, then the Settings screen opens without navigating away from my current tab state
  • Given the Settings screen is open, when I view the screen, then settings are grouped into logical card sections (notifications, accessibility, language, account management)
  • Given the Settings screen is open, when I interact with any tappable element, then the touch target is at least 48×48dp in all cases
  • +2 more
View Full Story →