# mdg-filius Netzwerksimulation nach [FILIUS](https://www.lernsoftware-filius.de) für den Browser — als App „Filius" im MDG-Dashboard, gemeinsam bearbeitbar. > Based on Filius by Dr. Stefan Freischlad and the Filius project. > > Dieses Projekt ist unabhängig. Es wird weder vom ursprünglichen > Filius-Projekt (Universität Siegen) noch von `filius-project` > (Filius on iPad) herausgegeben, betrieben oder unterstützt. ## Herkunft Der Simulationskern ist eine Übertragung nach TypeScript aus * [`filius-project/filius-ipad`](https://github.com/filius-project/filius-ipad) (Swift, GPLv2 oder GPLv3) — Vorlage für Kern, `.fls`-Codec und Tests, * [`filius1/filius`](https://gitlab.com/filius1/filius) (Java, GPLv2 oder GPLv3) — Referenz für Dateiformat und Verhalten. Jede übertragene Datei nennt in ihrem Kopf die Quelldatei. `CHANGES.md` führt die Herkunft je Paket. Lizenz dieses Repos: **GPL-3.0** (`LICENSE`). ## Aufbau | Pfad | Inhalt | | --- | --- | | `packages/core` | Simulationskern: Modell, Ereignis-Warteschlange, Protokolle, Anwendungen — ohne DOM, ohne Node | | `packages/fls` | `.fls` lesen, schreiben, Unbekanntes bewahren | | `packages/doc` | gemeinsames Dokument (Yjs): Projekt ⇄ Dokument, Schnappschuss des Kerns, Hausmeister, die Änderungen der Werkzeuge und des Geräte-Blatts (mit Javas Eingabeprüfung) | | `packages/protocol` | die eine Nachrichtenliste zwischen Editor und Simulationsraum (`/sim`) | | `packages/sim` | Simulationsraum (für Server F und den Web Worker) und `LocalSimHost` | | `packages/editor` | Oberfläche im Iframe des Dashboards (React, Vite): Fläche, Palette, Werkzeuge des Entwurfs, Geräte-Blatt, Aktionsmodus (Desktops, Anwendungen, Datenaustausch), Dokumentationsmodus (Text, Gliederungsfläche, Bild exportieren, Bericht als PDF); `npm run dev -w @mdg-filius/editor` öffnet die Entwicklungsseite | | `packages/server` | Filius-Dienst auf Server F: gemeinsame Dokumente über Hocuspocus (`/sync`), gespeichert in Postgres (Stand und Aktualisierungen, verdichtet), Hausmeister; Anmeldung mit der Eintrittskarte des Dashboards (`/__auth`, Keks, Lese- und Schreibstufe); Dienstweg des Dashboards (`/svc/*`: Projekte anlegen, löschen, einfrieren, Zugänge widerrufen); `/healthz`; `npm run build -w @mdg-filius/server` bündelt ihn nach `dist/main.mjs` *(Simulationsräume folgen)* | Plan und Entscheidungen: `knowledge/plans/FILIUS_WEB_PLAN.md` im Dashboard. ## Entwickeln ```bash npm install npm run hooks # Sprachprüfung vor jedem Commit (braucht das Dashboard drumherum) npm run check # Typprüfung + Tests (die Server-Tests starten eine Wegwerf-Postgres in Docker, oder nehmen FILIUS_TEST_DATABASE_URL) npm run test:browser # Tests im echten Browser (Playwright: Chromium; der Touch-Test auch in WebKit als iPad hoch und quer) ``` Server F braucht zum Start `DATABASE_URL`, `FILIUS_TICKET_SECRET` (mit dem Dashboard geteilt, das die Karten signiert), `FILIUS_SERVICE_KEY` (der Schlüssel des Dashboards für `/svc/*`) und `FILIUS_ORIGINS` (die Herkünfte des Editors, durch Kommas getrennt); `FILIUS_PORT` ist 8080, wenn nicht gesetzt. Fehlt eine davon, startet er nicht. Ohne HTTPS (Entwicklerrechner) setzt `FILIUS_INSECURE_COOKIE=1` den Keks ohne `Secure`. Code, Kommentare und Testnamen sind englisch; sichtbare Texte stehen hinter i18n-Schlüsseln (Deutsch/Englisch).