Skip to Content
Living documentation — last reviewed 2026-05-28
FeaturesLegalLegal — Code Map

Legal — Code Map

API

FileRole
apps/api/src/legal/legal.module.tsImports UsersModule; provides LegalService; exports for cross-module use (UsersService calls hasRequiredConsents in middleware)
apps/api/src/legal/legal.controller.tsGET /legal/documents (public), POST /legal/consents, GET /legal/consents/status
apps/api/src/legal/legal.service.tsgetLatestDocuments, recordConsent, getConsentStatus, hasOutstandingConsents, hasRequiredConsents
apps/api/src/legal/dto/record-consent.dto.tsValidates { types: LegalDocumentType[], context, organizationId? }

DB

FileRole
libs/db/src/lib/schema/legal.tslegal_documents, legal_consents + relations
libs/db/src/lib/schema/enums.tslegal_document_type (5 values), consent_context (4 values)

Shared

FileRole
libs/shared/src/lib/schemas/legal.schema.tsLegalDocumentType, ConsentContext, response shapes

Web

FileRole
apps/web/src/components/legal/legal-acceptance-form.tsxReusable acceptance dialog. Modes: standalone (with submit) or embedded (parent controls). Links out to fitkit.fit/{slug} for full document text
apps/web/src/app/api/legal-document/route.tsWeb proxy for fetching the marketing-site canonical HTML
apps/web/src/i18n/dictionaries/{en,he,ru}.jsonlegal.* keys for checkbox labels, errors, “Documents updated” banner copy

i18n hot keys

legal.acceptTos, legal.acceptPrivacy, legal.acceptWaiver, legal.viewDocument, legal.updatedBanner, legal.submit.