Service Layer medium complexity backend
0
Dependencies
0
Dependents
2
Entities
0
Integrations

Description

Business logic layer for creating and retrieving activity log entries. Enforces validation rules, applies default values when fields are omitted, and coordinates persistence through the repository. Acts as the single authoritative entry point for all activity-related operations across the application.

Feature: Simple Activity Logging

activity-service

Sources & reasoning

All four organizations named this the top-priority function (line 14-18). The 30-min default, under-two-clicks target, and HLF's 380-registration example (lines 20-22) directly define the UX contract. Phase matrix marks it Fase 1 / MUST HAVE, mapping to MVP.

  • NHF: Word-skjemaer sendes manuelt til regioner → manuell Excel-aggregering sentralt. Mål: registrering på under to klikk.
  • HLF: En likeperson hadde 380 enkeltregistreringer på ett år. Standardverdier (dagens dato, 30 min) som kan overstyres.
  • Designprinsipp: Lavest mulig kognitiv belastning. Standardvalg, gjenkjennelig logikk, færrest mulig steg.

Responsibilities

  • Apply and validate default values (date, duration) before persisting entries
  • Enforce business rules such as minimum duration and valid activity types
  • Delegate persistence to ActivityRepository and return canonical Activity records
  • Expose query methods for retrieving activity history per contact or mentor
  • Emit domain events or callbacks on successful log creation for downstream consumers

Interfaces

logActivity(mentorId: string, contactId: string, data: ActivityInput): Promise<Activity>
getActivitiesByContact(contactId: string): Promise<Activity[]>
getActivitiesByMentor(mentorId: string, dateRange?: DateRange): Promise<Activity[]>
getActivityById(activityId: string): Promise<Activity>

Related Data Entities (2)

Data entities managed by this component