Service Layer
129 components in the service layer layer
Service Layer components contain business logic, orchestrate operations, and provide core application functionality.
Backend service responsible for validating email/password credentials, issuing JWT access and refresh tokens, enforcing rate limiting and ac...
Backend service that manages the BankID OIDC authorisation code exchange, identity token validation, and user account creation or linking. E...
Backend service responsible for the full Vipps MobilePay Login OIDC flow. Handles authorisation code exchange against the Vipps token endpoi...
BLoC-based service managing the full biometric authentication flow. Checks hardware availability and enrollment status, invokes the local_au...
Core authorization service encapsulating the permissions matrix for all four Meander roles - Peer Mentor, Coordinator, Organization Admin, a...
Validates all profile form fields before submission, enforcing required field constraints, email format, and phone number patterns. Produces...
Business logic layer for reading and writing user profile data via the REST API. Fetches profile records tenant-scoped to the user's organiz...
Business logic service managing the full profile-switching lifecycle. Queries the user_roles table to enumerate available roles and org/loca...
Backend-authenticated service that generates a controlled, tenant-scoped profile summary payload for sharing. Explicitly whitelists only pub...
Backend service responsible for issuing and validating single-use cryptographic challenges for FIDO2 registration and authentication flows. ...
Core service managing the full FIDO2/WebAuthn lifecycle on the mobile client. Handles credential creation (registration), credential asserti...
Business logic layer for creating, validating, and submitting activity records. Posts validated activity drafts to the REST API, handles opt...
Encapsulates the logic for computing, persisting, and retrieving per-user activity defaults. Reads from and writes to the local SQLite cache...
Service enforcing field-level and cross-field validation rules for all wizard steps. Returns structured ValidationResult objects consumed by...
BLoC-based service that owns the in-progress activity registration as an immutable state object. Processes step events, updates state via co...
Core service that abstracts all calendar platform interactions behind a single Dart interface. Delegates to the iOS EventKit platform channe...
Optional service that creates calendar entries on the device for activities that have been successfully registered in Meander. Constructs a ...
Manages the full on-device speech recognition session lifecycle using Flutter's speech_to_text plugin (wrapping iOS Speech framework and And...
BLoC-based service that orchestrates proxy activity submission. Validates coordinator-to-peer-mentor access boundaries server-side, attaches...
Lightweight service that maintains real-time state of an in-progress bulk submission. Tracks total participants, processed count, and per-re...
BLoC-layer service that orchestrates batch activity creation for bulk registration. Splits large participant lists into chunks, dispatches e...
Shared service used by both coordinator proxy reporting and bulk registration to create activity records on behalf of a peer mentor or conta...
Stateless validation service enforcing field-level rules for each event wizard step before allowing progression. Returns structured validati...
Business logic layer responsible for submitting new events to the backend REST API and coordinating with the Event Repository for offline dr...
BLoC that owns all transient wizard state across the six steps: current step index, per-field values, validation status, and submission life...
BLoC managing the reactive state of the Event List Screen, orchestrating load, filter-change, and pagination events. Translates user interac...
Service layer responsible for fetching, sorting, filtering, and cursor-based pagination of events from the REST API endpoint GET /api/v1/eve...
Backend API service layer responsible for all business logic around event sign-ups. Enforces capacity limits, prevents duplicate registratio...
Business logic layer for travel expense submission and threshold evaluation. Accepts expense payloads from the UI, posts them to the REST AP...
Fetches and caches valid expense types and their combination rules from the backend. Provides the constraint logic that prevents invalid com...
Service responsible for compressing selected images with flutter_image_compress to stay under the 2 MB payload limit, then uploading them vi...
Backend service that generates time-limited presigned URLs for secure retrieval of stored receipt images by the admin portal. Ensures receip...
Business logic layer that fetches the active expense type catalogue scoped to the authenticated user's organisation, applies exclusion rule ...
Business logic layer for confidentiality declarations. Retrieves the applicable declaration template for the user's organisation, posts sign...
BLoC state manager for the contact list screen. Handles events for search input changes, filter selection, pagination, and pull-to-refresh. ...
Business logic service managing contact list retrieval, search, and filtering. Determines whether search should be performed client-side (sm...
BLoC managing the complete state machine for the contact detail and edit flow across both screens. Drives state transitions from loading thr...
Service layer responsible for all contact read and update operations via the REST API. Fetches the full contact object, submits PATCH update...
Flutter BLoC managing caregiver list state independently from the parent Contact BLoC, enabling targeted refresh of caregiver data without r...
Business logic layer for caregiver CRUD operations. Orchestrates calls to the Caregivers Repository, enforces valid relationship type values...
Business logic layer coordinating note retrieval, search, and pagination for the notes list feature. Delegates data access to Notes Reposito...
BLoC or Riverpod notifier that listens to text change events from the Note Editor Screen and triggers debounced write operations to prevent ...
Business logic layer that fetches and transforms aggregated activity data for the authenticated peer mentor. Calls the Statistics Repository...
Riverpod-managed service that fetches pre-aggregated team report data from the backend REST API, scoped to the coordinator's local associati...
Internal service layer responsible for running the SQL aggregation queries that transform raw activity and contact records into the structur...
Backend service that aggregates activity, contact, and organizational data from PostgreSQL into the Bufdir-required report structure for a g...
Backend service that packages a finalized Bufdir report into the government-accepted file format (Excel, CSV, or structured PDF, to be confi...
Factory that instantiates the correct accounting system adapter based on the organization's integration config. Ensures the Accounting Integ...
Adapter-based service that pushes approved expense and reimbursement data to external accounting systems (Xledger, Dynamics) after approval....
Backend service that handles coordinator-initiated assignment creation. Fetches the target peer mentor's public key, encrypts the sensitive ...
Manages assignment lifecycle state transitions - dispatched, delivered, read, contact established - by communicating status updates to the R...
Implements end-to-end asymmetric encryption using libsodium NaCl box primitives. Generates and stores per-user keypairs on-device (iOS Keych...
Backend service that queries assignment_status_logs for completed-status assignments per peer mentor, evaluates counts against organisation-...
Handles registration, update, and deregistration of FCM/APNs device tokens on behalf of the Flutter client. Called on login and whenever fir...
Flutter-side service using flutter_local_notifications to display notifications when the app is in the foreground. Bridges the firebase_mess...
Server-side service responsible for constructing notification payloads and dispatching them via the Push Notification Gateway abstraction la...
Dispatches transactional and operational emails to users via a configurable email provider (SendGrid or Resend). Applies organization-specif...
Sends SMS messages to users for urgent alerts and verification codes via a configurable SMS provider (Twilio or a Norwegian provider). Handl...
Server-side scheduled job that evaluates configurable scenario rules against system events and user state to determine when to dispatch noti...
Business logic layer for reading and writing notification preferences. Applies role-based defaults during onboarding, validates preference c...
Client-side Flutter service that renders invite URLs as scannable QR codes using the qr_flutter package. Handles QR image export for saving ...
Manages generation, retrieval, and lifecycle of personalized referral invite tokens and short URLs. Communicates with the backend REST API t...
Handles backend-side status transition logic for referrals, triggered by onboarding completion webhooks. Updates referral records from invit...
Business logic layer that fetches referral summary data and detailed referral lists from the backend API. Handles RBAC enforcement so peer m...
Flutter BLoC managing enrollment state on the mobile client. Handles optimistic UI updates, error recovery, and loading states for enroll, u...
Implements the full enrollment lifecycle including capacity checks, waitlist management, enrollment confirmation, and certificate eligibilit...
Scheduled backend job that queries for certificates expiring within 30 days and dispatches push notifications to affected peer mentors and t...
Backend service responsible for issuing, validating, and revoking peer mentor certificates. Generates signed certificate records in the cert...
Business logic service that manages private session notes for workshop facilitators. Notes are scoped to coordinator-and-above visibility us...
Service handling workshop session lifecycle including creation, retrieval, and status management. Workshop sessions are modelled as course e...
Backend service that aggregates a peer mentor's activity, contact, event, and expense data across a calendar year into a structured annual s...
Mobile-side service that generates a static shareable image or deep-link card from a given summary slide for distribution via platform share...
Backend service responsible for evaluating badge criteria and awarding badges to peer mentors. Triggered after activity saves, course enroll...
Service that interprets configuration-driven badge criteria definitions and evaluates them against a user's collected data. Supports criteri...
Pure client-side computation library in Dart that applies cached organization benefit rates to user-provided inputs and returns itemized adv...
Backend service that exposes a REST endpoint for retrieving the current benefit configuration (mileage rates, course credit values, organiza...
Manages local caching of the talking card dataset to improve reliability in low-connectivity environments. Fetches the card set from the RES...
Provides automated accessibility validation logic used both in CI and at runtime. Validates contrast ratios against WCAG 4.5:1 (text) and 3:...
Dart service layer that manages Flutter Semantics configuration for sensitive fields across the app. It builds and injects the correct Seman...
Central service managing runtime locale switching for the Flutter app using flutter_localizations and the intl package. Loads ARB files for ...
Business logic layer that fetches and aggregates role-scoped dashboard data from the REST API endpoint /api/v1/dashboard. Uses Riverpod prov...
Determines which home screen widget subtree to render at build time based on the authenticated user's role extracted from JWT claims via BLo...
Riverpod provider that fetches the resource link list from /api/v1/resources with the authenticated user's JWT, caches the response with a 1...
Riverpod provider that handles submission of support requests to the REST API endpoint. Detects connectivity state and delegates to the offl...
Service responsible for resolving the privacy policy content source - returning the bundled asset version for offline use or fetching a remo...
Riverpod provider that manages FAQ content fetching, local caching, and keyword search state. Fetches question-answer pairs from the backend...
Handles merge conflicts that arise when the same record is modified both on the device and on the server before sync occurs. Applies determi...
Monitors device network connectivity using the connectivity_plus Flutter package and emits state change events consumed by other offline ser...
Central coordinator for all offline read and write operations. Routes data access through the local SQLite cache when network is unavailable...
Core orchestrator that processes the sync queue whenever network connectivity is available. Schedules periodic background tasks via the Work...
Monitors device network connectivity state using the connectivity_plus Flutter package and emits a stream of connectivity change events. Tri...
Server-side service that aggregates KPI metrics for an organization by executing optimized SQL aggregate queries against PostgreSQL. Enforce...
Aggregates events from multiple source tables (activities, expenses, event_registrations, audit_logs) and normalizes them into a unified Fee...
Focused service handling the invitation token lifecycle: generation, storage, validation, and expiry. Generates cryptographically secure sin...
Backend service encapsulating all business logic for user lifecycle management: invitation dispatch, profile updates, deactivation, and cros...
Handles the business logic for assigning, changing, and removing user roles within an organization. Validates that the requesting admin's or...
Shared service responsible for writing structured audit log entries to the audit_logs table. Used by bulk-action-service to record every ind...
Server-side batch endpoint handler (POST /api/v1/users/bulk) that accepts an array of user IDs and an action descriptor. Validates each user...
Backend service that owns the approval workflow state machine for activity registrations. Handles status transitions from pending to approve...
Core business logic service responsible for managing the full lifecycle of activity flag states. Handles flag creation with reason annotatio...
Service that detects potential duplicate activity submissions across coordinators and local associations, fulfilling NHF's requirement to id...
Backend service exposing PATCH endpoints for approve, reject, and request-clarification actions on expense claims. Validates actor role and ...
Server-side evaluation engine that checks all active auto-approval rules for an organization at the moment of expense submission. Evaluates ...
Business logic layer that orchestrates aggregation queries, enforces role-based org scoping, and computes summary statistics for the reimbur...
Backend service that aggregates raw activity records into summary statistics using SQL GROUP BY queries on the activities, users, and organi...
Server-side service that aggregates all relevant activity data for a given reporting period and formats it according to Bufdir's specificati...
Backend service that translates user-selected dimensions, metrics, and filters into parameterized PostgreSQL queries. Enforces strict input ...
Validates and sanitizes all incoming report query parameters before they reach the SQL layer. Maintains a whitelist of permitted dimension a...
Backend service encapsulating all business logic for reading and writing organization settings. Validates incoming payloads against allowed ...
Backend service exposing a REST API for resolving, creating, updating, and deleting organization-specific terminology overrides. Serves the ...
Shared constants file defining all valid feature flag keys used by both the backend API and Flutter mobile client. Acts as the single source...
Backend service exposing REST endpoints for reading and updating organization-level feature flags. Serves the flag map to the Flutter mobile...
Core backend service implementing recursive PostgreSQL CTE queries to fetch ancestor and descendant chains in the organization tree. Enforce...
Background validation service that scans activity records to detect duplicate reporting across associations - i.e., the same user, date, and...
Backend service providing CRUD endpoints and membership management APIs for local associations. Handles the multi-membership model where a p...
Low-level HTTP adapter for the external Dynamics portal REST API. Manages request signing, OAuth token refresh, exponential backoff retries,...
Core backend service managing the full integration lifecycle with the external Dynamics-based portal. Handles authentication, idempotent dat...
Provider-agnostic adapter service implementing the accounting integration interface for both Xledger and Dynamics REST APIs. Abstracts provi...
Event-driven service that listens for expense approval events and orchestrates delivery to the configured accounting system. Implements at-l...
Lightweight rule-based service that evaluates authentication and session events against configurable thresholds to flag suspicious activity ...
Backend service that aggregates security-relevant data from audit_logs and sessions tables to produce real-time security metrics and anomaly...
Core backend service responsible for writing audit log entries and querying them for the admin UI. Implements a fire-and-forget write queue ...
Core business logic service for listing, monitoring, and terminating user sessions across both mobile (JWT refresh tokens) and admin portal ...
Provides structured content data for all platform feature sections. Implemented as a static data module (TypeScript objects or JSON) enablin...
Pure utility module encapsulating all ROI calculation logic for the Impact Calculator. Accepts organizational parameters and returns project...
Business logic layer that calculates total cost of ownership for both the status quo (manual tooling) and Meander, projecting costs over a c...
Next.js API route handler that receives demo booking form submissions, validates all input server-side, persists the lead record to the data...
Next.js API route handler that triggers a transactional confirmation email to the prospect immediately after a successful booking form save....
Thin client-side service that bridges the Cookie Policy page with the active Cookie Management Platform. Provides the action link or modal t...
Other Component Types
User Interface components handle presentation logic, user interactions, and visual elements of the application.
Data Layer components manage data persistence, storage operations, and data access patterns throughout the application.
Infrastructure components provide foundational utilities, system integrations, and supporting functionality for the application.