Shared Components
Components reused across multiple features
UI Components
WCAG 2.2 AA compliant reusable picker widget providing 44×44px touch targets, keyboard-accessible numeric inputs, and sc...
Reusable Flutter widget that wraps any TextField with a microphone button, enabling peer mentors to dictate text instead...
Compact list-item card displaying a contact's name, role context, and last interaction summary. Meets WCAG 2.2 AA minimu...
Reusable search input widget that triggers real-time filtering across contacts and notes content. Implements debounce lo...
Segmented control widget allowing users to toggle the contacts list between 'Contacts' and 'Peer Mentors' modes. Persist...
A reusable card widget that displays a single aggregated metric — such as total hours, total contacts, or activity count...
Compact badge widget that renders the current approval status of a reimbursement claim with color coding and localized l...
Persistent Material 3 NavigationBar shell widget wrapping all five tab destinations (Home, Contacts, Add, Work, Notifica...
Inline badge component that surfaces duplicate activity detection results as visual warnings on activity list items and ...
Overlay modal that displays receipt images fetched via signed URLs from object storage, preventing unauthorized direct a...
Reusable Flutter widget that renders a visual chart of individual benefit categories using the fl_chart package. Support...
Accessible, reusable button widget used throughout the Flutter app. Enforces minimum 24x24 logical pixel touch targets p...
Accessible text input widget enforcing WCAG 2.2 AA requirements for form fields across the entire app. Requires an expli...
Widget utilities managing modal presentation, dismissal, and focus trapping to meet WCAG 2.2 focus management requiremen...
Standardized page header widget providing consistent visual hierarchy, back navigation, and screen reader announcement a...
A persistent UI widget that communicates the current synchronization state to the user. Displays pending queue count, la...
Service Components
BLoC-based service that orchestrates the email and password authentication flow against the REST API. Submits credential...
A Riverpod provider that reads the authenticated user's role and organization context from app state and exposes a permi...
Shared business logic service for creating, updating, and submitting activities. Used by both the simple activity loggin...
Business logic layer for contact CRUD operations, shared across the Contact List & Search and Contact Detail & Edit feat...
Handles the composition and dispatch of user invitation emails via a transactional email provider such as Resend or Send...
Specialized service responsible for recording immutable audit trail entries whenever an approval action is taken on an a...
Service responsible for writing immutable audit log entries whenever a reimbursement is approved, rejected, or included ...
Flutter BLoC-based service that stores and broadcasts the active association context throughout the app session. All API...
Shared service that provides aggregated activity and contact statistics for a given user and time range. Used by both th...
Centralized HTTP client for the Flutter mobile app that handles all communication with the Next.js backend. Provides a t...
Central service managing runtime accessibility state, screen reader detection, font scaling, and focus traversal order a...
Provides AES-256-GCM symmetric encryption for sensitive fields at rest. Wraps key derivation logic with per-user keys st...
Data Components
Secure persistent storage for JWT access and refresh tokens using Flutter Secure Storage, backed by iOS Keychain and And...
Data access layer for persisting and retrieving authentication tokens, session records, and identity provider linkages. ...
Data access layer for activity records supporting both online REST API writes and offline local SQLite reads. Shared wit...
Read-only local cache of contact records enabling offline contact search within the wizard contact step. Synchronizes fr...
Data access layer for the contacts table, shared across Contact List & Search and Contact Detail & Edit features. Abstra...
Data access layer optimized for the admin oversight use case, providing complex filtered and paginated queries that join...
Data access layer for the full organizational hierarchy including organizations, regions, and local associations. Execut...
Provides read and write access to the local SQLite mirror of server-side data required for offline operation — specifica...
Persists security-relevant events to a dedicated PostgreSQL audit_logs table with tamper-evident append-only semantics. ...
Infrastructure Components
Infrastructure layer responsible for JWT token parsing, validation, and expiry checks. Decodes access token claims to ex...
Next.js middleware layer that intercepts every API request and validates the JWT role claims server-side before the requ...
Next.js API route middleware that enforces role-scoped access control for all team report endpoints, verifying the reque...
Middleware that enforces role-based access control for all Bufdir report generation and export endpoints, restricting ac...
Infrastructure component that writes structured audit log entries to audit_logs for every approval lifecycle event: subm...
Implements the asymmetric key exchange and symmetric encryption layer used for assignment payloads. Generates and stores...
Adapter layer wrapping the transactional email provider (Resend or SendGrid) used for all outbound system emails. Provid...
Generates and validates time-limited cryptographically signed tokens used in user invitation links. Tokens encode the in...
Infrastructure utility that generates time-limited signed URLs for accessing receipt images stored in object storage (Ve...
Application-level tenancy scoping layer that intercepts every incoming API request and attaches the resolved tenant cont...
Provides low-level utilities for generating image snapshots and PDF exports of the calculator result screen. Uses Flutte...
Flutter-side Dio/HTTP interceptor chain that transparently handles token refresh, retry logic, and error normalization f...
Single Dart constants file defining all visual design tokens for the application including colors, typography, spacing, ...
Infrastructure layer providing localized, organization-aware semantic label strings for all interactive elements and scr...
Monitors device network connectivity using the connectivity_plus Flutter package and exposes reactive streams of connect...
Bootstraps and manages the on-device SQLite database using the drift (formerly moor) package for Flutter. Defines the fu...
Wraps flutter_secure_storage to provide hardware-backed secure storage delegating to iOS Keychain and Android Keystore. ...
Manages a pool of PostgreSQL connections for the Next.js backend using node-postgres (pg). Configures pool size, idle ti...
Manages versioned SQL schema migrations for the PostgreSQL database. Applies migration scripts in sequence, tracks appli...