189bcb6f38369939958b506b7110bedde1d6ff87
- render.test.mjs drives the real UI under jsdom: employees tab renders and add works, planning tab renders the calendar grid (makeDayCell), generate fills slots, a manual slot change updates history, and a beforeunload flush persists state to localStorage; data tab renders the history view. - persistence.test.mjs seeds malformed persisted state (employee without constraints, out-of-range moderatorsPerDay) and asserts the startup load normalizes it without crashing. - jsdom added as the single devDependency; node_modules gitignored; both suites wired into npm test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Meeting Mixer
Web-App zur Planung und Verwaltung von Meeting-Moderatoren.
Features
- Mitarbeiterverwaltung – Mitarbeiter anlegen, bearbeiten und deaktivieren
- Monatsplanung – Kalenderbasierte Zuweisung von Moderatoren pro Tag
- Algorithmus – Automatische, gleichmäßige Verteilung der Moderationen auf alle aktiven Mitarbeiter
- Excel-Export – Fertige Monatsplanung als XLSX-Datei exportieren
- JSON Import/Export – Kompletten Datenstand sichern und wiederherstellen
- Verlauf – Vergangene Monatspläne einsehen und wiederherstellen
- Persistenz – Automatische Speicherung im Browser (localStorage)
Tech-Stack
- Vanilla JavaScript (ES-Module) – kein Framework, kein Build-Schritt
- Persistenz: Browser-
localStorage(kein Backend, keine Datenbank) - Excel-Im-/Export: SheetJS (per CDN, mit SRI eingebunden)
- Statisches Serving:
serve(Dev) - Tests: Node-Assertions (
node:assert); DOM-/Render-Tests via jsdom (einzige devDependency)
Voraussetzung: ein moderner Browser mit ES-Modul-Unterstützung.
Starten
npm start
Startet einen statischen Server. Der genutzte Port wird beim Start ausgegeben (Standard 3001; weicht automatisch aus, falls belegt). Öffne anschließend die angezeigte URL im Browser.
Tests
npm test
Datenschutz & Speicherung
Diese App ist ein lokales Single-User-Werkzeug: Alle Daten (Mitarbeiternamen,
Urlaube, Pläne, Verlauf) werden ausschließlich im Browser (localStorage)
gespeichert. Es gibt keinen Server und keine Übertragung an Dritte. Die Daten
liegen unverschlüsselt vor und sind für jeden zugänglich, der Zugriff auf
dasselbe Browser-Profil hat.
- App nicht auf geteilten/öffentlichen Geräten für sensible Daten nutzen.
- Datenstand regelmäßig über JSON-Export (Tab „Daten") sichern.
- Beim Leeren der Browserdaten gehen alle nicht exportierten Daten verloren.
Languages
JavaScript
78.8%
CSS
13.3%
HTML
7.9%