Corporate governance — architecture overview
Retirement notice (ADR-006, change
retire-board-portal, Cycle-1 refactor 2026-06-14): The standalone board portal withBoard*-prefixed schemas has been retired. The seven schemas (Board, BoardMember, BoardMeeting, BoardVote, BoardMinutes, BoardMaterial, BoardAuditLogEntry), theboard-portal.jsonmanifest fragment, six Board/Resolution Vue views, and the dedicated board CRUD controllers/services no longer exist in the codebase.Corporate governance is now served by mode-adaptation (
organisatie_modus=corp) of the universal Decidiq entities. Seedocs/ARCHITECTURE.mdsection 3.3b for the entity mapping table. This document is retained as the technical reference for the corporate governance experience delivered through the universal architecture.Audience: developers / integrators working on the corporate governance mode of Decidiq.
Source spec:
openspec/changes/board-meeting-resolutions/(archived), superseded by ADR-005 (Decision supertype) and ADR-006 (mode adaptation).
1. Layered architecture (post-ADR-006, unified)
Corporate governance uses the same layered architecture as all other Decidiq
domains. There are no Board*-prefixed layers. The mode-specific behaviour is
injected at render time via organisatie_modus=corp.
┌──────────────────────────────────────────────────────────────────┐
│ Vue 3 / CnAppRoot manifest shell │
│ 6-item mode-aware nav (ADR-004 IA + C7 ia-six-item-nav) │
│ src/config/modeLabels.js — "Bodies" → "Board", etc. │
│ Universal views: DecisionList, DecisionDetail, BodyDetail, ... │
└──────────────────────────────────────────────────────────────────┘
│ JSON over HTTP
▼
┌──────────────────────────────────────────────────────────────────┐
│ Universal controllers — appinfo/routes.php │
│ Retained for corporate features (retargeted to universal ents): │
│ ConflictOfInterestController EIDASSignatureController │
│ ProxyVoteController GovernanceReportController │
│ RegulatorExportController MultilingualReconciliationController│
│ AuditLogController │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ Services — lib/Service/ (retargeted to universal entities) │
│ ConflictOfInterestService EIDASSignatureService │
│ ProxyVoteService GovernanceReportService │
│ RegulatorExportService MultilingualReconciliationService │
│ ITranslationAdapter CalDavSyncService │
│ QuorumVerificationService │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ OpenRegister object API (ADR-022) — universal schemas │
│ oc_openregister_table_decidesk_governance_body │
│ oc_openregister_table_decidesk_person │
│ oc_openregister_table_decidesk_membership │