# Fahrplan Acht Meilensteine. Jeder endet mit einer lauffähigen Version auf `main`, grünen Prüfungen, aktueller Dokumentation und einem Eintrag im DEVLOG. | Meilenstein | Ziel | Status | | --------------------------------------- | ---------------------------- | -------- | | [M1](#m1--fundament) | Fundament | erledigt | | [M2](#m2--aufgaben-und-projekte) | Aufgaben und Projekte | erledigt | | [M3](#m3--kalender-lesen) | Kalender lesen | geplant | | [M4](#m4--wochenplanung-und-zeitblöcke) | Wochenplanung und Zeitblöcke | geplant | | [M5](#m5--benachrichtigungen) | Benachrichtigungen | geplant | | [M6](#m6--integrationen) | Integrationen | geplant | | [M7](#m7--schnellerfassung-und-api) | Schnellerfassung und API | geplant | | [M8](#m8--mcp) | MCP | geplant | --- ## M1 – Fundament **Erledigt am 10.09.2026 mit Version 0.1.0.** **Ziel:** Ein angemeldeter, betreibbarer Rumpf. Noch keine Aufgaben, kein Kalender — aber alles, worauf die späteren Meilensteine aufsetzen. - [x] Projektgerüst: Next 16, React 19, TypeScript strict, Tailwind 4 - [x] `npm run pruefen`: Prettier, ESLint, tsc, Vitest, ShellCheck - [x] Datenmodell für Anmeldung, Passkeys, Bereiche und Audit - [x] Anmeldung über OIDC, Passkey und wahlweise Passwort - [x] Rollen `BENUTZER` und `ADMIN`, serverseitig in Seite **und** Server Action - [x] Audit-Eintrag je schreibender Aktion, Details werden gesäubert - [x] Instanzsteuerung `INSTANZ=firma|daheim` mit 404 statt Hinweis - [x] Bereiche verwalten: Farbe, Arbeitsfenster, Tageskapazität - [x] Protokollseite für die Verwaltung - [x] `/api/health` mit Status, Version und Instanz - [x] Dockerfile, Compose-Stapel mit eigenem Migrationsdienst - [x] `backup.sh`, `update.sh`, `scripts/release.sh`, `scripts/zeit.sh` - [x] Unit-, Integrations-, Migrations- und E2E-Tests - [x] Screenshot-Kette mit eigener Wegwerf-Instanz - [x] README, Schnellstart, Handbuch, CHANGELOG, DEVLOG **Bewusst verschoben:** `Aufgabe` und `Zeitblock` kommen mit M2 und M4, `Kalenderkonto` mit M3 — jeweils mit den Feldern, die der Provider dann wirklich braucht, statt heute geraten. ## M2 – Aufgaben und Projekte **Erledigt am 10.09.2026 mit Version 0.2.0.** **Ziel:** Alles erfassen und wiederfinden, noch ohne Kalender. - [x] `Aufgabe` mit Typ, Status, Priorität, Aufwand, Fälligkeit, Quelle - [x] Eindeutigkeit `[quelle, quelleRef]`, Integrationen upserten - [x] Inbox: schnell erfassen, später einsortieren - [x] Ideen getrennt von Aufgaben - [x] Projekte mit Arbeitspaketen und Meilensteinen - [x] Listen mit Filtern nach Bereich, Status und Fälligkeit - [x] Handbuchseiten und Bilder **Bewusst offen gelassen:** Kein Wiederholungsrhythmus für Aufgaben und keine Verknüpfung von Aufgaben untereinander — beides steht unter „Ideen für später" und wartet darauf, ob es im Alltag wirklich fehlt. ## M3 – Kalender lesen **Ziel:** Termine aus Microsoft 365 und Google sehen. - [ ] `Kalenderkonto` mit Anbieter, Tokens und Delta-Verweis - [ ] OAuth-Verbindung je Instanz: Graph immer, Google nur daheim - [ ] Graph-Delta-Sync und Google-Sync über `fetch`, Antworten mit zod geprüft - [ ] Ganztägige Termine zählen nicht zur Belegung - [ ] Anonymisierte Beispielantworten in `test/fixtures/` - [ ] Hintergrundjob mit node-cron ## M4 – Wochenplanung und Zeitblöcke **Ziel:** Aufgaben per Ziehen und Ablegen in den Kalender schreiben — und Verschiebungen von dort zurückholen. - [ ] `Zeitblock` an genau einer Aufgabe und einem Kalenderkonto - [ ] Wochenansicht mit `@dnd-kit/core` - [ ] Schreiben in den Kalender, Rückweg beim Verschieben - [ ] Schleifenschutz über `hash = sha256(startISO|endeISO)` - [ ] Konflikte: der Kalender gewinnt (HTTP 412 auf If-Match) - [ ] Belegung gegen die Tageskapazität des Bereichs ## M5 – Benachrichtigungen - [ ] Web-Push mit `web-push` - [ ] Tagesüberblick per E-Mail über nodemailer - [ ] Erinnerungen an Fälligkeiten, Jobs über node-cron - [ ] Je Benutzer einstellbar, mit Ruhezeiten ## M6 – Integrationen - [ ] Zammad und Wartungsplaner-API (nur `firma`) - [ ] Telegram (nur `daheim`) - [ ] Spiegel: `firma` sendet, `daheim` empfängt - [ ] Jede Integration upsertet über `[quelle, quelleRef]` ## M7 – Schnellerfassung und API - [ ] Erfassung vom Handy, auch offline - [ ] Öffentliche API mit Token je Anwendung - [ ] Rechte je Token, jede Nutzung im Protokoll ## M8 – MCP - [ ] MCP-Server über `@modelcontextprotocol/sdk` - [ ] Lesen und Anlegen von Aufgaben und Zeitblöcken - [ ] Rechte wie bei der API, jede Nutzung im Protokoll --- ## Ideen für später - Auswertung: wie viel Zeit ging tatsächlich in welchen Bereich - Wiederkehrende Aufgaben mit eigenem Rhythmus - Vorlagen für wiederkehrende Projekte - Verknüpfung von Aufgaben untereinander (blockiert, gehört zu) - Export der eigenen Daten als JSON ## Bewusst nicht geplant - **Wiederkehrende Wartungsaufgaben mit Nachweispflicht.** Die bleiben im Wartungsplaner. Der Planer liest nur Fälligkeiten über dessen API. - **Mehrbenutzerbetrieb mit geteilten Aufgaben.** Der Planer ist für eine Person gedacht; Kollegen melden sich in der Firmeninstanz nur an ihren eigenen Daten an. - **Eigene Kalenderdarstellung als Ersatz für Outlook.** Der Planer schreibt in die vorhandenen Kalender, er ersetzt sie nicht. - **Zeiterfassung zur Abrechnung.** Dafür gibt es andere Werkzeuge.