111
Total Service Layer
25
Low Complexity
55
Medium Complexity
31
High Complexity
11
Shared

Service Layer components contain business logic, orchestrate operations, and provide core application functionality.

Auth Service

Backend service implementing the Authentication Module's stable sign-in/sign-out/refresh contract using bcrypt password hashing, short-lived...

high shared Email & Password Login
Flutter Auth Client

Client-side Riverpod service (no codegen) that calls the Auth Service REST endpoints, stores the access token in memory and the refresh toke...

medium shared Email & Password Login
Password Reset Service

Handles the generation, delivery, and validation of time-limited signed reset tokens. Sends the reset email via the platform email gateway a...

medium Email & Password Login
BankID OAuth Flow

Implements the BankID OIDC authorization code flow with PKCE for the Flutter mobile app. Generates the code verifier and challenge, launches...

high BankID Authentication
Vipps OAuth Flow

Implements the OIDC-compatible OAuth 2.0 authorization code flow for Vipps Login, handling redirect initiation, deep-link callback processin...

high Vipps Authentication
Biometric Token Exchange Service

On a successful biometric pass, retrieves the device-bound refresh token from Secure Token Store and silently exchanges it for a new short-l...

medium Biometric Login (Face ID/Fingerprint)
WebAuthn Service

Server-side WebAuthn library integration (SimpleWebAuthn or WebAuthn4J) running on the Node.js / Next.js backend. Generates and validates re...

high Passkeys (WebAuthn)
Role Guard Service

Backend middleware that intercepts every authenticated API request, reads the role claim from the validated JWT, and evaluates it against th...

high Role-Based Access Control
Bootstrap Refresh Service

Triggers a re-fetch of the tenant bootstrap endpoint after a context switch, supplying the new organization ID to reload the module registry...

medium Profile Switching
Profile Context Service

A Riverpod StateNotifier that owns the currently active role-organization pair for the authenticated user. Persists the selected context to ...

high Profile Switching
Activity Service

Backend REST service (Next.js /api/v1/activities) that persists peer mentor activity records to the PostgreSQL database. Validates the minim...

low shared Simple Activity Logging
Activity Service

Shared service responsible for persisting activity records via optimistic mutation and the Drift mutation outbox, supporting both quick-log ...

medium shared Activity Registration Wizard
Wizard State Service

Riverpod StateNotifier (keepAlive: true) that holds the full in-progress wizard form state across all steps. Prevents data loss when the app...

medium Activity Registration Wizard
Calendar Sync Service

Integrates with the device calendar plugin (device_calendar) to write, update, and optionally delete calendar entries when activities or eve...

medium Calendar Sync
STT Service Integration

Manages the full speech recognition session lifecycle by wrapping the speech_to_text Flutter plugin, which delegates to Apple SpeechRecogniz...

medium Speech-to-Text Input
File Upload Service

Handles client-side validation, upload queuing, and multipart POST submission of attachment files to the backend attachment endpoint. Enforc...

high Document Attachments
Report Template Service

Backend service (Next.js REST endpoint) that stores and serves per-organization form schemas as JSON configuration objects, defining which r...

medium Formalized Home-Visit Report
Proxy Activity Service

Business logic service for submitting proxy activity records. It calls the backend API with an explicit on_behalf_of user ID, validates that...

medium Coordinator Proxy Reporting
Bulk Activity Service

Handles server-side creation of one activity record per selected peer mentor within a single atomic database transaction. Accepts a bulk pay...

high Bulk Registration
Event Service

Handles creation and persistence of events by posting to POST /api/v1/events with organization context derived from the JWT. Queues failed o...

medium Event Creation
Wizard State Service

BLoC/Riverpod state container that manages step progression, field values, and back-navigation safety for multi-step wizards. Shared with th...

low shared Event Creation
Event Participation Service

Business logic layer handling participant registration and cancellation for events. Executes POST /api/v1/events/{id}/participants for sign-...

medium Event Sign-up
Expense Service

Core business-logic service that creates, validates, and syncs expense records. Evaluates auto-approval eligibility by checking the configur...

medium Travel Expense Registration
Expense Type Configuration Service

Fetches and caches the organisation-specific expense type definitions from the backend, including mutual exclusion rules that prevent invali...

low Travel Expense Registration
Receipt Upload Service

Backend-bound service responsible for compressing captured images client-side to a target of 500 KB or below, computing a SHA-256 content ha...

medium Receipt Photo Upload
Expense Type Rule Service

Evaluates the JSON rules payload carried by each expense type record to determine mutual-exclusion constraints, receipt-required flags, and ...

medium Expense Types & Requirements
Declaration Submission Service

Handles POST of a signed confidentiality declaration to the REST API, attaching the declaration version hash, user ID, and UTC timestamp. Ro...

low Confidentiality Declarations
Contact Search Service

Riverpod-based repository provider that executes role-filtered FTS5 full-text search queries against the local Drift database. Applies a use...

medium Contact List & Search
Caregiver Link Service

Riverpod-based repository that wraps Drift queries on the relatives table, providing CRUD operations for caregiver and next-of-kin records l...

medium Caregiver & Next-of-Kin
Note Service

Riverpod-backed service managing the full lifecycle of notes including create, read, update, and delete operations against the REST API and ...

medium Note Editor
Statistics Aggregation Endpoint

Backend REST API endpoint that computes per-user activity totals scoped strictly to the authenticated user - count by activity type, total h...

medium Personal Activity Statistics
Statistics Service

Riverpod provider that calls the dedicated aggregation REST API endpoint and exposes a typed StatisticsSummary to the UI. Manages cache inva...

medium shared Personal Activity Statistics
Team Stats Service

Riverpod provider that fetches coordinator-scoped team statistics from the REST API, caching results in Drift for offline access. Joins acti...

medium Coordinator Team Reports
Assignment Confirmation Service

Writes delivery and read confirmation records to assignment_deliveries, both immediately when online and via the Mutation Outbox when offlin...

medium Encrypted Assignment Dispatch
Encryption Service

Implements per-tenant asymmetric encryption and decryption for assignment payloads. Generates and persists RSA/EC key pairs to Flutter Secur...

high Encrypted Assignment Dispatch
Assignment Counter Service

Server-side service responsible for incrementing the assignment delivery count when a peer mentor marks an assignment as contacted or comple...

medium Assignment Threshold Tracking
Consent Service

Business logic layer for all consent lifecycle operations including gate evaluation, grant recording, version upgrade detection, coordinator...

high Progressive Digital Consent
Relative Service

Riverpod-managed service layer handling scoped CRUD operations for relative records via the REST endpoint /api/v1/contacts/:id/relatives. Ap...

medium Relative Contact Registration
Case Link Service

Backend service and corresponding Riverpod provider that manages CRUD operations on the relative_case_links junction table. Enforces cross-o...

medium Relative Case Linking
Mentor Status Service

Riverpod service layer that issues PATCH /api/v1/users/:id/mentor-status requests to update the peer_mentor_statuses record and triggers a p...

medium shared Pause Function
Mentor Status Service

Riverpod service that manages peer mentor status transitions (active ↔ paused) via the REST API, enforcing atomic writes and handling backen...

low shared Resume Function
Expiry Check Service

Backend scheduled service that runs daily to query the certifications table for records within a configurable warning window or past the exp...

medium Certification Expiry Auto-Pause
Geolocation Service

Backend-integrated service that fetches role-scoped peer mentor location data from the peer_mentor_locations REST endpoint, enforcing coordi...

high Peer Mentor Map
Geographic Match Service

Server-side service that ranks eligible peer mentors by proximity to a contact's registered location using Haversine distance computation. A...

high Assignment Matching by Geography
Mentor Suggestion API Endpoint

REST endpoint handler at GET /api/v1/assignments/:id/suggested-mentors that validates the caller's authorization, checks the geographic-map-...

medium Assignment Matching by Geography
Workshop Module Guard

Checks the platform module registry at runtime to determine whether the mentor-program module is enabled for the current tenant. Returns a d...

low shared Career Workshops
Workshop Service

Handles all business logic for workshop CRUD operations, module-toggle awareness, and synchronisation with the Drift/SQLCipher offline store...

medium Career Workshops
Workshop Notes Service

Riverpod provider scoped to workshop_id that manages note creation, retrieval, and auto-save debounce logic for workshop notes. Debounces wr...

low Workshop Notes
Workshop Participant Service

Manages CRUD operations for workshop participant records, including registering new participants, updating attendance status values (registe...

low Workshop Participant Lists
Workshop Todo Service

Handles CRUD operations for workshop to-do items, coordinating between the Riverpod provider, the Drift local cache, and the mutation outbox...

low Workshop To-Do Lists
Email Template Engine

Renders accessible HTML email templates with semantic markup, sufficient contrast, and plain-text fallback for every notification type. Inje...

low Email/SMS Notifications
Notification Channel Service

Routes each notification event to the appropriate delivery channels (push, email, SMS) based on per-type configuration and user preferences....

medium Email/SMS Notifications
Scenario Configuration Service

Backend service providing CRUD operations for notification_scenario_templates, enforcing per-org isolation and validating scenario definitio...

medium Notification Scenarios
Scenario Event Evaluator

Async backend service that subscribes to domain events such as activity overdue, assignment dispatched, and certificate expiring, then evalu...

high Notification Scenarios
Template Variable Resolver

Service that resolves placeholder variables in notification message templates at send time, substituting context values such as contact name...

low Notification Scenarios
Notification Settings Sync Service

Riverpod service that sends PATCH requests to the backend whenever a notification preference is toggled, ensuring server-side persistence so...

low Notification Settings
Referral Link Service

Backend service that generates server-side signed short invite URLs encoding the referrer user ID and organization tenant context, persistin...

medium Invite Link & QR Sharing
Referral Stats Service

Aggregates referral invite outcomes (sent, accepted, pending, expired) per referrer by joining referral_invites against user registration ev...

low Recruitment Tracking
Course Enrollment Service

Manages the full enrollment lifecycle - fetching the org-filtered catalog from the REST API, submitting enrollment POSTs to create course_en...

medium Course Registration
Certificate Service

Backend-aware service that fetches the current user's certification record from the REST API and exposes it to the UI layer. Determines cert...

low Digital Peer Mentor Certificate
Renewal Notification Service

Scheduled backend job that queries the certifications table for records with expiry_date within configurable reminder windows (60, 30, and 7...

low Certificate Renewal Reminder
Summary Generation Service

Backend service that aggregates yearly activity metrics per peer mentor by querying activities, event_participants, and activity_statistics ...

high Annual Summary (Wrapped)
Achievement Service

Backend service hosting the declarative badge rule engine that evaluates badge eligibility after activity saves, certification events, and s...

medium Achievement Badges
Advantage Calculation Service

Pure Dart service that executes the client-side impact calculation using a static, versioned impact model compiled into the app bundle. Acce...

low Advantage Calculator
Card Catalog Sync Service

A lightweight Flutter service that fetches the versioned talking-cards catalogue from the backend REST endpoint and upserts new or updated c...

low Talking Cards Toolbox
WCAG Audit Service

Backend-coupled CI service that runs flutter_accessibility_lints and Semantics tree diffing on every pull request to gate merges on WCAG 2.2...

high WCAG 2.2 AA Compliance
HomeViewModel

A Riverpod StateNotifier that combines module registry enablement state and the active role context from the role provider into a single rea...

medium Role-Specific Home Dashboard
Module Registry Service

Fetches the enabled module set for the current user's tenant from the backend bootstrap response and exposes it as a Riverpod provider consu...

high shared Role-Specific Home Dashboard
Preferences Service

Riverpod provider that reads and writes user preferences to the local Drift user_preferences table and enqueues sync mutations to the backen...

medium App Settings & Preferences
Settings Registry

Centralized registry where each feature module registers its configurable preference options at app startup, following the same module regis...

low App Settings & Preferences
Support Contact Config Service

Reads organization-level support contact values (email, phone) from the backend bootstrap response and caches them locally for offline avail...

low Contact Us
Policy Content Service

Fetches the privacy policy document from the backend endpoint or falls back to a bundled locale-aware asset, then caches the result locally ...

low Privacy Policy
FAQ Content Service

Fetches the FAQ JSON dataset from the backend REST endpoint and persists it locally via Drift for offline access. Serves role-filtered and k...

low FAQ
ID Mapping Service

Manages the lifecycle of client-side UUIDs assigned to entities created while offline and reconciles them to server-assigned IDs after a suc...

high Offline Data Support
Mutation Outbox Service

Serializes pending write operations with retry metadata into a persistent outbox queue stored in the encrypted local DB. Replays mutations i...

high shared Offline Data Support
Conflict Resolver Service

Resolves write conflicts that occur when the same entity is modified both locally and remotely during an offline period. Applies last-write-...

high Background Sync
Sync Queue Service

Processes the mutation outbox by polling pending Drift table rows and uploading them to the backend when connectivity is available. Implemen...

high Background Sync
KPI Aggregation Service

Server-side Next.js API route handler that executes tenant-scoped PostgreSQL aggregation queries to compute activity counts, active user cou...

high Dashboard KPIs
KPI Module Filter Service

Utility service that queries the module_configurations table for a given organization and returns the subset of KPI categories that should b...

low Dashboard KPIs
Activity Feed Service

Backend service that queries activities, events, and audit_logs tables with cursor-based pagination sorted by created_at descending. Enforce...

medium Activity Feed
Invitation Token Service

Generates, stores, and validates short-lived cryptographic tokens used in user invitation emails. Tokens expire after 48 hours; redemption i...

low User CRUD
User Administration Service

Backend service layer implementing the full user lifecycle for org admins: sending tokenized invitation emails, completing registration, upd...

medium User CRUD
Role Assignment Service

Backend service that processes role assignment, change, and revocation requests. Enforces multi-tenant isolation so an admin can only modify...

medium Role Assignment
Bulk User Service

Processes bulk user operations - deactivation, role change, and invitation resend - as a single batched API call executed within a database ...

high Bulk Actions
Activity Approval Service

Backend service responsible for processing approve and reject actions on activity submissions. Validates that the requesting user holds Coor...

medium Activity Review & Approval
Activity Flag Service

Backend service exposing REST endpoints POST /api/v1/activities/:id/flags and PATCH /api/v1/activities/:id/flags/:flagId for flag creation a...

medium Activity Flagging
Duplicate Detection Service

Scheduled background service that compares newly submitted activities against recent history across configurable dimensions including peer m...

high Duplicate Activity Detection
Duplicate Resolution Service

Handles administrator decisions on duplicate candidates with two resolution paths: confirm-duplicate performs a soft-delete of the secondary...

medium Duplicate Activity Detection
Expense Approval Service

Backend service handling the review lifecycle for expense claims, including single-record and bulk approval actions. Writes reviewer decisio...

high Expense Approval Queue
Approval Rules Service

Backend service that manages CRUD operations for approval_rules and evaluates submitted expense claims against the organization's active rul...

medium Auto-Approval Rules
Report CSV Export Service

Backend service that streams query results server-side as a CSV file download in response to an export request from the Reports Page. Applie...

medium Team Reports
Report Generation Service

Backend service that executes tenant-scoped aggregation queries against the activities, users, and user_organization_roles tables to produce...

high Team Reports
Bufdir Report Service

Server-side Next.js service that aggregates activity records from PostgreSQL scoped strictly to the requesting organization's tenant, maps i...

high Bufdir Report Generation
Bufdir Schema Config Service

Manages the versioned server-side configuration that maps internal Meander activity fields to Bufdir's required output structure. Maintained...

medium Bufdir Report Generation
Export Download Service

Next.js API route that retrieves the finalized bufdir_exports record and streams it as a downloadable file in the format accepted by Bufdir ...

medium Bufdir Export
Custom Report Service

Backend Next.js API route handler that receives parameterized report queries from the Report Builder UI, applies strict tenant-scoped WHERE ...

high Custom Reports
Report Export Service

Server-side streaming endpoint that executes a report query and writes results as CSV or XLSX to the HTTP response using Node.js streaming t...

medium Custom Reports
Report Schema Registry

Server-side service that defines and exposes the enumerated set of permitted dimensions, filters, groupings, and aggregation metrics availab...

medium Custom Reports
Organization Settings Service

Backend service that handles CRUD operations on the organization_settings table, enforcing role-based access (Org Admin and Global Admin onl...

medium Organization Settings
Support Access Grant Service

Manages creation, expiry enforcement, and revocation of time-bounded Norse Global Admin support access grants for a tenant organization. Enf...

medium Organization Settings
Terminology Override Service

Next.js API route handler that manages CRUD on the terminology_overrides table scoped by organization_id, validating all writes against the ...

medium Custom Terminology
Module Configuration Service

Backend service that manages reading and writing of per-tenant module configurations in the module_configurations table. Resolves declared i...

high Feature Toggles
Hierarchy Service

Backend service managing CRUD operations on organization_hierarchy_nodes using a Postgres adjacency list model with self-referential parent_...

high Multi-Organization Hierarchy
Member Association Service

Backend service managing CRUD operations for user-organization memberships stored in user_organization_roles. Handles assignment, transfer, ...

medium Member Associations
Portal Integration Service

Backend service that persists and manages external portal configuration per organization. Handles OAuth credential encryption at rest, test-...

high External Portal Integration
Accounting API Adapter

Backend service implementing the connector pattern that bridges Meander approved expense records to external accounting systems. Exposes a s...

high Accounting API
Security Event Service

Backend service that queries the audit_logs table to aggregate and categorize security-relevant events for a given tenant. Filters by event_...

medium Security Dashboard
Audit Log Service

Shared backend helper injected into sensitive domain services (user management, role assignment, organization settings) to emit append-only ...

medium Audit Log
Session Revocation Service

Backend service that handles admin-initiated session revocation by invalidating the session record and the full refresh-token chain for the ...

medium Session Management
Cost Calculation Engine

Pure formula-driven calculation module that converts organization size into manual reporting cost estimates and Meander subscription cost us...

low Cost Comparison
Booking Form Validator Service

Server-side or edge-function validation logic that checks the submitted booking form payload for required fields, valid email format, and ho...

low Booking Form