- Canonical name "Meeting Mixer" everywhere: <title>, README, .vch-description (now non-technical per convention) and package.json (meeting-mixer). - README gains a Tech-Stack section and an accurate, non-misleading port note. - Magic numbers replaced by named constants: LOW_PRIORITY_PENALTY in algorithm.js; MIN/MAX_MODERATORS_PER_DAY in utils.js, used by data.js, calendar.js and app.js. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.9 KiB
Markdown
52 lines
1.9 KiB
Markdown
# 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](https://sheetjs.com/) (per CDN, mit SRI eingebunden)
|
||
- **Statisches Serving:** [`serve`](https://www.npmjs.com/package/serve) (Dev)
|
||
- **Tests:** Node-Assertions (`node:assert`), ohne externe Abhängigkeiten
|
||
|
||
Voraussetzung: ein moderner Browser mit ES-Modul-Unterstützung.
|
||
|
||
## Starten
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
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.
|