Skip to content

Modul-Isolation

Features und Module sind in ihrem eigenen Verzeichnis gekapselt (api/src/modules/<name>/). Direkte Imports über Modulgrenzen hinweg sind nicht erlaubt.

Module kommunizieren ausschließlich über definierte Schnittstellen:

  • API-Routes / Controller — für synchronen Zugriff zwischen Modulen
  • Public API (index.ts) — explizit exportierte Services eines Moduls
  • Event-Bus / Message-Queue — für asynchrone Entkopplung
  • Shared-Package@flowgeist-kita/shared für gemeinsame Typen und Utils
  • common/ — für echte Querschnittsfunktionalität (Auth, Guards, Utilities)

Vor jedem neuen Import prüfen: Geht dieser Import über eine Modulgrenze? Wenn ja → nicht importieren, sondern die definierte Schnittstelle verwenden oder die Funktionalität nach common/ bzw. shared/ verschieben.

Strikte Modul-Isolation ist Voraussetzung für:

  • Wartbarkeit durch externe Entwickler ohne Gesamtsystem-Kenntnis
  • Testbarkeit der Module in Isolation
  • spätere Erweiterbarkeit (z. B. optionale Module pro Mandant)