Organisation Admin Portal
Feature Detail
Description
A dedicated administrative interface giving organisation-level admins visibility and control over their entire peer mentor and coordinator network. Admins can view aggregated statistics, manage user accounts, assign roles, and oversee the activity log across all local chapters within their organisation. The portal is identified as a MUST HAVE / Phase 1 requirement by all four partner organisations. The admin portal must support the deeply nested structure of NHF (national associations → regions → local chapters) as well as simpler flat structures. It surfaces activity summaries, pause statuses, and certification states in a single dashboard, and provides the data needed for Bufdir grant reporting and internal governance.
Analysis
Enables central oversight without requiring manual Excel aggregation. Provides the reporting layer that justifies the app investment to decision-makers and funders. Critical for NHF's 1,400-chapter structure where no single coordinator can have a full picture.
Role: org_admin sees all data within their organisation tree; super_admin (Norse/global) has cross-org visibility. Implement row-level security in Supabase matching the org hierarchy. Dashboard widgets: active peer mentors, activities this month, pending reimbursements, paused mentors, expiring certifications. Export to CSV/Excel for Bufdir reporting. Consider separate web admin portal (Flutter Web) vs embedded in mobile app.
Components (208)
Shared Components
These components are reused across multiple features
User Interface (59)
Service Layer (52)
Data Layer (33)
Infrastructure (54)
User Stories (10)
As a As a Organization Administrator
I want to view a chronological audit log of all significant actions performed within my organisation — registrations, role changes, exports, and approvals
So that I can investigate disputes, verify compliance with Bufdir requirements, and demonstrate governance to stakeholders during audits
- Given I open the activity log viewer, when the log loads, then I see a paginated list of events sorted newest-first with actor name, event type, timestamp, and a summary
- Given I filter by event type 'proxy_registration', when results are displayed, then only proxy registration events appear and each entry shows the coordinator who registered on behalf of whom
- Given I search for a specific peer mentor by name, when results return, then only events involving that person as actor or subject are shown
- +3 more
As a As a Organization Administrator
I want to send targeted push notifications and in-app announcements to subsets of my organisation — all coordinators, all peer mentors in a specific chapter, or users with expiring certifications
So that I can communicate important operational updates, training reminders, and compliance deadlines without relying on external email lists or SMS
- Given I open the notification composer, when I select audience 'peer mentors with certifications expiring in 30 days', then the audience preview shows the count of recipients matching that filter
- Given I compose a notification with an empty body, when I tap Send, then the form validates and prevents dispatch with a clear error message
- Given I dispatch a notification to all coordinators in a chapter, when the delivery completes, then a dispatch record is created showing recipient count and delivery timestamp
- +3 more
As a As a Organization Administrator
I want to configure the connection settings, field mappings, and sync schedules for external integrations such as Xledger (accounting), Dynamics (HLF portal), or Bufdir API
So that data flows automatically between the peer mentor app and our existing back-office systems without manual re-entry, reducing errors and saving coordinator time
- Given I open the integration dashboard, when I select 'Xledger', then the setup wizard prompts me for API credentials and walks me through field mapping for expense categories
- Given I enter integration credentials, when I tap 'Test Connection', then the system performs a health check against the external API and confirms connectivity within 10 seconds
- Given I configure a field mapping that maps an app field to an invalid Xledger account code, then the field mapping validator surfaces a warning before saving
- +3 more
As a As a Organization Administrator
I want to customise the terminology used throughout the app — for example, replacing 'peer mentor' with 'likeperson', 'coordinator' with 'kontaktperson', or activity type names specific to my organisation
So that app language matches the terminology my organisation already uses, reducing confusion and training time for volunteers
- Given I open the terminology settings screen, when I view the label list, then I can see all overridable keys with their default values and any existing org overrides highlighted
- Given I type a custom label for 'peer_mentor_singular', when I tap 'Preview', then the terminology-aware text widget shows the change applied across sample screens in real time
- Given I save a terminology change, when peer mentors and coordinators reload the app, then the updated labels appear within 60 seconds via Riverpod state propagation
- +3 more
As a As a Organization Administrator
I want to enable or disable specific features for my organisation — such as expense reimbursement, driver declarations, Bufdir reporting, or gamification
So that my organisation only sees functionality relevant to its workflows, reducing cognitive load and preventing accidental use of features we have not yet activated
- Given I open the feature flags screen, when the list loads, then I see all feature flags with clear descriptions, current state for my org, and any dependency warnings
- Given I disable the 'expense_reimbursement' feature flag, when a coordinator in my org opens the add menu, then the expense registration option is not displayed
- Given I enable a feature flag with a rollout percentage of 20%, when users in my org open the app, then approximately 20% see the new feature based on deterministic user-ID-based evaluation
- +3 more
As a As a Organization Administrator
I want to export activity data, user lists, and summary statistics from the admin portal in standard formats (CSV, Excel, PDF)
So that I can share data with board members, prepare funding applications, respond to audit requests, and perform offline analysis without developer involvement
- Given I select 'Export user roster' with the current date range, when I tap Export, then a CSV file is generated containing all users in my org scope with their role, status, and last activity date
- Given I request an activity export for Q1, when the export completes, then the downloaded file contains one row per activity with peer mentor name, contact ID (anonymised per GDPR), activity type, date, duration, and chapter attribution
- Given an export is in progress, when I navigate away and return, then the export progress indicator shows current status and does not restart the job
- +3 more
As a As a Organization Administrator
I want to view a consolidated panel showing the certification status of all peer mentors in my organisation, with expiry warnings and renewal tracking
So that I can proactively manage compliance before certifications lapse, ensuring only qualified mentors are active and that HLF's requirement to auto-hide mentors with expired certifications is enforced
- Given I open the certification status panel, when the data loads, then I see all peer mentors grouped by status: valid, expiring within 30 days, expiring within 60 days, and expired
- Given a peer mentor's certification has expired, when I view the panel, then their entry is visually differentiated with an expired badge and they are listed first in the panel
- Given the nightly certification expiry job runs, when a mentor's certification crosses the 30-day expiry threshold, then the mentor receives a push notification and their coordinator receives an in-app alert
- +3 more
As a As a Organization Administrator
I want to view and edit the hierarchical structure of my organisation — regions, chapters, and sub-units — and assign users to the correct units
So that activity reporting, statistics, and Bufdir exports are correctly attributed to the right organisational unit and data isolation between chapters is enforced
- Given I open the hierarchy admin portal, when the tree loads, then I can see all levels (national → regional → local) collapsed by default with expand/collapse controls
- Given I create a new chapter node, when I assign a coordinator to it, then that coordinator's app immediately scopes all data access to that chapter
- Given I archive a chapter, when existing users in that chapter log in, then they are shown a no-access screen until reassigned to an active chapter
- +3 more
As a As a Organization Administrator
I want to see a centralised dashboard showing the health and activity metrics of my entire organisation at a glance
So that I can quickly identify issues, track engagement trends, and make informed decisions without manually querying reports
- Given I am authenticated as an Organisation Admin, when I navigate to the admin section, then the dashboard loads within 2 seconds and shows aggregate stats scoped to my organisation
- Given the dashboard is loaded, when there are peer mentors with certifications expiring within 30 days, then a prominent warning card is displayed with a count and a link to the certification management screen
- Given the dashboard is loaded, when there are expense claims pending approval, then a stat card shows the count and links to the coordinator review queue
- +2 more
As a As a Organization Administrator
I want to create, edit, deactivate, and assign roles to user accounts within my organisation
So that the right people have the right level of access, onboarding of new coordinators and peer mentors is fast, and leavers are blocked promptly
- Given I am on the user management screen, when I tap 'Invite User', then I can enter an email address and select an initial role, and the system sends an invitation email
- Given a user is listed with role 'peer_mentor', when I tap 'Change Role' and select 'coordinator', then the role is updated immediately and the user's app access changes on their next session
- Given I deactivate a user account, when the user attempts to log in, then they are shown the no-access screen with a support contact message
- +3 more