# MPM – Module Dieses Verzeichnis enthält ab **Phase 3** die installierbaren Module der Plattform (z. B. das Referenzmodul Kalender). ## Modul-Vertrag (Ausblick) Jedes Modul ist eine eigenständige Applikation mit: - eigenständiger Oberfläche, Business-Logik, API und Datenbank-Schema - einem Manifest `module.json` - einem minimalen API-Vertrag ### Manifest ```json { "id": "calendar", "name": "Kalender", "version": "1.0.0", "slug": "kalender-tool", "description": "Kalenderverwaltung", "author": "…", "runtime": "node", "entrypoint": "server.js", "port": 41001, "healthcheck": "/health", "apiVersion": "v1" } ``` ### Minimal-API je Modul | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/health` | Liveness/Readiness | | GET | `/api/manifest` | Manifest zur Laufzeit | | GET | `/api/me` | Aktueller Benutzer (von der Plattform übergeben) | ### Paketstruktur (ZIP-Installation) ``` calendar-module/ ├── module.json ├── backend/ ├── frontend/ ├── migrations/ ├── assets/ └── README.md ``` ### Grundsätze - Module laufen als **interne Prozesse** im Management-Container (kein Docker-in-Docker) auf eigenen Ports (41001+), die nie nach außen veröffentlicht werden. - Module sind **nicht vertrauenswürdig** und erhalten nur minimal benötigte Rechte. - Ein Modul darf niemals in fremde Schemas schreiben; jedes Modul erhält ein eigenes PostgreSQL-Schema. - Entfernt ein Admin ein Modul, müssen alle übrigen Plattformfunktionen unverändert weiterlaufen.