7.8 KiB
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 | Fundament | erledigt |
| M2 | Aufgaben und Projekte | erledigt |
| M3 | Kalender lesen | erledigt |
| M4 | Wochenplanung und Zeitblöcke | erledigt |
| M5 | Benachrichtigungen | erledigt |
| M6 | Integrationen | erledigt |
| M7 | Schnellerfassung und API | erledigt |
| M8 | 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.
- Projektgerüst: Next 16, React 19, TypeScript strict, Tailwind 4
npm run pruefen: Prettier, ESLint, tsc, Vitest, ShellCheck- Datenmodell für Anmeldung, Passkeys, Bereiche und Audit
- Anmeldung über OIDC, Passkey und wahlweise Passwort
- Rollen
BENUTZERundADMIN, serverseitig in Seite und Server Action - Audit-Eintrag je schreibender Aktion, Details werden gesäubert
- Instanzsteuerung
INSTANZ=firma|daheimmit 404 statt Hinweis - Bereiche verwalten: Farbe, Arbeitsfenster, Tageskapazität
- Protokollseite für die Verwaltung
/api/healthmit Status, Version und Instanz- Dockerfile, Compose-Stapel mit eigenem Migrationsdienst
backup.sh,update.sh,scripts/release.sh,scripts/zeit.sh- Unit-, Integrations-, Migrations- und E2E-Tests
- Screenshot-Kette mit eigener Wegwerf-Instanz
- 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.
Aufgabemit 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
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
Erledigt am 10.09.2026 mit Version 0.3.0.
Ziel: Termine aus Microsoft 365 und Google sehen.
Kalenderkontomit 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
Erledigt am 11.09.2026 mit Version 0.4.0.
Ziel: Aufgaben per Ziehen und Ablegen in den Kalender schreiben — und Verschiebungen von dort zurückholen.
Zeitblockan 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
Bewusst offen gelassen: Die Dauer lässt sich nicht am Balken ziehen, und ein Zeitblock landet immer im ersten verbundenen Kalender. Beides steht unter "Ideen für später" — erst zeigt der Alltag, ob es wirklich fehlt.
M5 – Benachrichtigungen
Erledigt am 11.09.2026 mit Version 0.5.0.
Ziel: Sagen, was ansteht — und dabei so selten stören, dass niemand auf die Idee kommt, alles abzuschalten.
- Web-Push mit
web-push, Anmeldung je Browser - Tagesüberblick per E-Mail über nodemailer
- Erinnerungen an Fälligkeiten und vor Zeitblöcken, Jobs über node-cron
- Je Benutzer einstellbar, mit Ruhezeiten über Mitternacht
- Wiederholungssperre je Anlass, Sache und Tag
- Abgleichfehler erst nach mehreren Versuchen hintereinander
Bewusst offen gelassen: Keine Sammelmeldung mehrerer Anlässe in einer Nachricht und kein Nachholen dessen, was in die Ruhezeit fiel. Eine Erinnerung an einen Zeitblock, der längst begonnen hat, hilft niemandem.
M6 – Integrationen
Erledigt am 12.09.2026 mit Version 0.6.0.
Ziel: Aufgaben dort abholen, wo sie entstehen — ohne dass die Planung darunter leidet, die hier passiert.
- Gemeinsame Aufnahmestelle: jede Integration liefert nur Funde
- Zammad (nur
firma), lesend - Wartungsplaner-API — Schnittstelle steht noch nicht fest
- Telegram (nur
daheim): erfassen, melden, abhaken - Spiegel:
firmasendet,daheimempfängt - Jede Integration upsertet über
[quelle, quelleRef]
Offen geblieben: Der Wartungsplaner ist nicht angebunden. Die Aufnahmestelle steht bereit und die Seite „Integrationen" führt ihn als sichtbare Lücke; es fehlt allein das Abholen, und dafür muss erst feststehen, was das Produkt an Schnittstelle hergibt.
Bewusst offen gelassen: Zammad wird nur gelesen. Ein Ticket schließt man im Ticketsystem — sonst weiß die Kollegin nicht, warum es plötzlich zu ist.
M7 – Schnellerfassung und API
Erledigt am 12.09.2026 mit Version 0.7.0.
Ziel: Etwas festhalten können, wo man gerade steht — und andere Anwendungen hereinlassen, ohne ihnen die Schlüssel zum ganzen Haus zu geben.
- Erfassung vom Handy, auch offline
- Öffentliche API mit Token je Anwendung
- Rechte je Token, jede schreibende Nutzung im Protokoll
- Als App ablegbar (Manifest, eigenes Symbol)
Offen geblieben: Die Bilder der Erfassungsseite im Handbuch zeigen noch eine falsche Inbox-Zahl; der Fehler selbst ist behoben, nur der Bildlauf kam danach nicht mehr durch.
Bewusst offen gelassen: Die Schnittstelle kann keine Bereiche, Projekte oder Zeitblöcke anfassen und nichts löschen. Was von außen kommt, landet in der Inbox; die Einordnung bleibt bei dem, der plant. Auch eine Begrenzung der Aufrufzahl gibt es nicht — bei einer Handvoll eigener Tokens wäre sie mehr Zeremonie als Schutz.
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.