Shared Components
Components reused across multiple features
UI Components
A reusable Flutter widget wrapper that conditionally renders or hides child widgets based on the current user's active r...
Searchable dropdown or list picker widget that loads peer mentors within the coordinator's local association scope. Disp...
Reusable date and time selection widget used within the Event Creation Wizard steps for picking event date, start time, ...
Coordinator-only inline widget within the registration screen that allows selecting a contact or peer mentor on whose be...
Reusable inline search widget that queries the contact store and returns a selected contact ID and display name. Used bo...
Reusable Flutter widget for selecting the date range and organizational scope of a Bufdir report. Supports predefined pe...
A shared design token system that enforces WCAG 2.2 AA compliance at the component level. It encapsulates color tokens w...
Reusable focus ring overlay widget that renders a visible, high-contrast focus indicator around any focusable element du...
Reusable badge/chip widget that renders the approval status of an activity (pending_review, approved, rejected, correcte...
Inline image viewer for receipt photos attached to expense claims. Supports thumbnail display within queue rows and full...
UI component providing controls for filtering report data by date range, local association, activity type, and individua...
Service Components
Service layer responsible for all authentication REST API communication including login, token refresh, password reset r...
Shared validation service enforcing minimum password security standards on both client (mobile) and server (Next.js API)...
Next.js middleware that runs on every protected API route (`/api/v1/...`) to validate the JWT access token and enforce r...
Business logic service responsible for constructing and submitting activity payloads to the REST API. Shared with the Si...
Low-level HTTP client wrapper that calls the events REST API endpoints, attaches JWT auth headers, serialises query para...
Business logic service responsible for fetching paginated events from the REST API, applying role-based and organisation...
Manages chunked, resumable file uploads to the backend REST API, ensuring reliable delivery on poor mobile connections. ...
Backend service that manages the lifecycle of organisation-scoped expense type catalogues, including CRUD operations, ru...
Business logic service that manages contact retrieval, search operations, and role-based access enforcement. Communicate...
Shared speech-to-text service that delegates to the platform-specific STT Provider Adapter. Accepts a start-recording co...
Manages focus traversal order, visible focus indicators, and keyboard shortcut bindings to ensure every function in the ...
Central service governing all screen reader semantics across the mobile app. Provides utilities for wrapping widgets wit...
Wraps Flutter's LocalizationsDelegate and the intl package to provide runtime locale resolution and language-switching a...
Implements the repository pattern abstracting data source selection from feature-level BLoC/Riverpod state. Routes read ...
Shared service that determines the data visibility scope for the authenticated user based on their role. Coordinators ar...
Centralized service responsible for emitting, querying, and exporting audit log entries. Inserts append-only records wit...
Service that enforces data scoping rules for report queries based on the authenticated user's role and association membe...
Records structured audit log entries for every Bufdir export action. Captures the exporting user's ID, the organization,...
Generates downloadable CSV and XLSX files from report result sets. Streams large result sets to avoid memory exhaustion....
Next.js server-side context provider injected into the admin portal layout that resolves all UI labels for the requestin...
Backend service that manages the terminology override map for each organization. Handles CRUD operations on the JSONB te...
Loads the static feature registry file that defines all known feature keys, their default states, human-readable descrip...
Resolves which nodes in the organization tree the requesting admin is authorized to view or modify. Global Admins bypass...
Resolves the effective organization scope for a given user based on their JWT claims and role assignments. Determines wh...
Core backend service responsible for all business logic around user-to-local-association membership management. Enforces...
Loads and provides DPA article content from MDX source or CMS, enabling legal team updates without code deploys. Parses ...
Central service managing the full consent lifecycle on the sales website. Reads and writes consent state to localStorage...
Data Components
Secure on-device storage adapter for JWT access and refresh tokens using flutter_secure_storage. On iOS it writes to the...
Manages the full lifecycle of JWT access and refresh tokens using flutter_secure_storage, backed by iOS Keychain and And...
Local data store managing persisted activity records on the device. Shared with the Simple Activity Logging feature. Sup...
Local SQLite data access object that persists the most recently fetched events page for offline-capable rendering. Provi...
Mobile-side data store that caches the organisation's active expense type catalogue, including type metadata, mutual-exc...
Riverpod-based state management store that holds the current contact list, search state, pagination cursor, and loading ...
Local SQLite repository for submitted notes, shared between the Notes List and Note Editor features. Provides CRUD opera...
Maintains pre-aggregated assignment completion counts per peer mentor per reporting period, eliminating the need for exp...
Data access layer for the push_tokens table, managing the registration, refresh, and deregistration of device push token...
Persists a record of every dispatched notification, capturing rule ID, recipient user ID, delivery channel, template ID,...
Data component managing FCM/APNs device token lifecycle including registration, refresh, and deletion. When a user disab...
Data access layer that reads organization-specific impact multipliers (hourly rates, cost equivalents) from the local SQ...
Persists user-level accessibility overrides such as preferred text scale factor, high-contrast mode toggle, and reduced-...
Device-local SQLite database managed via the drift (formerly Moor) or sqflite Flutter plugin. Stores a mirrored subset o...
Persistent queue stored in local SQLite that records all data mutations (creates, updates, deletes) made while offline, ...
Data access layer that executes optimized PostgreSQL queries for activity aggregation, leveraging indexes on organizatio...
Flutter Riverpod provider that loads the organization terminology map from the session bootstrap payload at login and pe...
Data access layer that executes parameterized PostgreSQL queries over the audit_logs and sessions tables to retrieve raw...
Infrastructure Components
Platform-level secure storage adapter wrapping iOS Keychain and Android Keystore APIs via the Flutter secure storage plu...
Shared utility used by both the mobile app and the Next.js backend to decode and validate JWT access tokens and extract ...
Runtime adapter that resolves dynamic organization-specific field labels and terminology for the profile screens, readin...
Shared HTTP client responsible for all communication between the Flutter mobile app and the Next.js backend REST API at ...
Infrastructure layer providing WCAG 2.2 AA accessibility annotations, semantic labels, and screen reader support for all...
Thin HTTP client adapter responsible for serializing and dispatching registration requests to the REST API endpoint POST...
Backend facade that routes expense export requests to provider-specific adapters (Xledger for Blindeforbundet, Microsoft...
Server-side PDF generation adapter using Puppeteer or a PDF rendering service to produce a submission-ready Bufdir repor...
Abstracts the Flutter platform-specific file delivery mechanisms. On download, uses the `path_provider` package to write...
Abstracts platform-specific push notification delivery behind a unified NotificationGateway interface. Routes messages t...
Thin wrapper around the share_plus Flutter package that triggers the native OS share sheet. Abstracts platform-specific ...
Thin adapter wrapping Flutter's share_plus package to provide a testable, mockable interface for triggering the native p...
Thin platform-channel wrapper that queries the host OS for active assistive technology state (VoiceOver on iOS, TalkBack...
Low-level Flutter accessibility adapter that provides an abstraction over the Flutter Semantics framework, enabling cust...
Wraps the flutter_url_launcher and flutter_inappwebview packages behind a unified interface. Handles the conditional rou...
Reusable Flutter widget that renders a markdown string as formatted rich text using a lightweight parser. Used by FAQ an...
Wraps the connectivity_plus Flutter package to provide a reactive stream of network availability events. Detects transit...
Infrastructure adapter that generates short-lived signed URLs for receipt images stored in the object storage layer. Use...
Infrastructure utility that writes structured audit log entries to the audit_logs table. Used by the Auto-Approval Rule ...
Utility used by the Auto-Approval Rule Engine to verify that the auto_approval_rules feature flag is enabled for the sub...
Infrastructure adapter handling multipart form data uploads of organization logo images to object storage, returning a C...
Central constants file shared across both the admin portal and the mobile app that defines all valid label keys and thei...
Redis caching layer for feature flag resolution. Stores per-organization feature maps with a 60-second TTL so that API m...
Extracts and validates the organization scope claim from the admin's JWT at request time, determining the highest organi...
Infrastructure component that records all membership change events to the audit_logs table. Captures who made the change...
Short-lived storage for revoked JWT access token JTIs to ensure immediate revocation takes effect within the token's rem...
Integrates web analytics (Google Analytics or Plausible) to measure visitor behavior, conversion rates, traffic sources,...
Provides page-level SEO configuration for the Features Page including meta tags, Open Graph properties, and JSON-LD stru...
Lightweight analytics instrumentation for tracking user engagement on sales website pages. Fires page view and interacti...
Infrastructure adapter that abstracts the transactional email provider (e.g., Resend or SendGrid) behind a unified inter...
MDX or lightweight CMS adapter that supplies versioned legal content to the Terms of Service page without requiring code...
Manages pre-rendered PDF files for legal documents stored in object storage, providing signed or public URLs for downloa...
Infrastructure utility that manages deferred loading of third-party analytics and marketing scripts on the sales website...
Shared layout component used across all legal and policy pages on the sales website (Privacy Policy, Terms of Service, D...