Files
planer/ROADMAP.md
T
Florian WildeandClaude Opus 5 56b5356708 docs: README, Schnellstart, Handbuch, Fahrplan und CHANGELOG
README mit Funktionsumfang, Bildergalerie, allen Umgebungsvariablen als
Tabelle und dem Betrieb inklusive Sicherung und Wiederherstellung.

Der Schnellstart führt in acht Schritten von git clone zur ersten
Anmeldung, jeder Schritt mit erwartetem Ergebnis. Er endet mit dem
Hinterlegen eines Passkeys statt beim ersten Kalenderkonto oder der
ersten Aufgabe — beides gibt es erst mit M3 und M2. Das ist in ROADMAP
und Handbuch so vermerkt, damit niemand danach sucht.

Handbuch mit Seiten zu Anmelden, Bereichen und Protokoll.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 14:29:51 +02:00

125 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | in Arbeit |
| [M2](#m2--aufgaben-und-projekte) | Aufgaben und Projekte | geplant |
| [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
**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
**Ziel:** Alles erfassen und wiederfinden, noch ohne Kalender.
- [ ] `Aufgabe` mit Typ, Status, Priorität, Aufwand, Fälligkeit, Quelle
- [ ] Eindeutigkeit `[quelle, quelleRef]`, Integrationen upserten
- [ ] Inbox: schnell erfassen, später einsortieren
- [ ] Ideen getrennt von Aufgaben
- [ ] Projekte mit Arbeitspaketen und Meilensteinen
- [ ] Listen mit Filtern nach Bereich, Status und Fälligkeit
- [ ] Handbuchseiten und Bilder
## 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.