generated from Dicken/dickendock
83 lines
4.0 KiB
Markdown
83 lines
4.0 KiB
Markdown
# Roadmap
|
||
|
||
Geplante Reihenfolge der nächsten Commits, aufbauend auf dem lauffähigen
|
||
Grundgerüst aus Commit 1.
|
||
|
||
## ✅ Commit 2 — Geräte- & Dienste-API (erledigt)
|
||
|
||
- REST-Endpunkte (Fastify) für `GET/POST/PATCH/DELETE` auf `devices` und `services`
|
||
- Zod-Validierung der Request-Bodies (`packages/shared/src/schemas.ts`)
|
||
- Repository-Layer über Drizzle (`apps/backend/src/db/repositories`)
|
||
|
||
## ✅ Commit 3 — Suche im Frontend (erledigt)
|
||
|
||
- Anbindung von `rankServices` aus `packages/shared` an echte Backend-Daten
|
||
- TanStack Query für Datenhaltung (`apps/frontend/src/hooks/useServices.ts`)
|
||
- Tastatur-Navigation (Pfeiltasten wählen, Enter öffnet Dienst in neuem Tab, Escape leert Suche)
|
||
- Neue UI-Komponente `ResultsList` in `packages/ui`
|
||
|
||
> TanStack Router wird bewusst erst mit dem Adminbereich (Commit 6) eingeführt,
|
||
> da es vorher keine zweite Route gibt, die er sinnvoll verwalten könnte.
|
||
|
||
## ✅ Commit 4 — Kategorien & Favoriten (erledigt)
|
||
|
||
- Kategorien-API: Erstellen, Umbenennen, Löschen, Bulk-Reorder (`PATCH /api/categories/reorder`)
|
||
- Löschen einer Kategorie setzt `category` bei betroffenen Diensten auf `null`,
|
||
löscht die Dienste aber nicht
|
||
- Favoriten-Toggle direkt in der Trefferliste des Frontends (Stern anklicken,
|
||
per `useMutation` + Cache-Invalidierung)
|
||
|
||
> Die eigentliche Kategorien-*Verwaltungsoberfläche* (Erstellen/Umbenennen/
|
||
> Drag & Drop in der UI) wandert in Commit 6 (Adminbereich) – die Startseite
|
||
> bleibt bewusst die minimalistische Suche, kein Verwaltungs-UI dort.
|
||
|
||
## ✅ Commit 5 — Scanner (erledigt)
|
||
|
||
- `apps/backend/src/scanner/`: DNS-Kandidaten-Auflösung, TCP-Portscan (80, 443 +
|
||
typische Ports), HTTP-Titel-/Favicon-Extraktion, Softwareerkennung per
|
||
Signatur-Liste, FritzBox-TR-064-Client (inkl. selbst implementierter
|
||
HTTP-Digest-Authentifizierung)
|
||
- `POST /api/scan/devices/:id` und `POST /api/scan/fritzbox` – ausschließlich
|
||
manuell auslösbar, kein automatischer/zeitgesteuerter Scan
|
||
- `upsertDeviceFromScan` / `upsertServiceFromScan` in den Repositories:
|
||
garantiert, dass Benutzerfelder (displayName, category, favorite, order,
|
||
alias, icon) bei erneuten Scans nie überschrieben werden – End-to-End getestet
|
||
(Service manuell umbenannt/kategorisiert/favorisiert, erneut gescannt,
|
||
Werte blieben erhalten)
|
||
|
||
> Alle Module wurden gegen echte, lokal gestartete Test-Server verifiziert
|
||
> (Port-Erkennung, Titel/Favicon-Parsing, Softwareerkennung, kompletter
|
||
> FritzBox-SOAP-/Digest-Auth-Ablauf inkl. Fehlerfall bei falschem Passwort).
|
||
> Ein Test gegen eine echte FritzBox war in dieser Umgebung nicht möglich.
|
||
|
||
## ✅ Commit 6 — Adminbereich (erledigt)
|
||
|
||
- TanStack Router (code-basiert): `/` (Startseite) + `/admin/*`
|
||
- Menüpunkte wie spezifiziert: Dashboard, Geräte, Dienste, Scanner, Kategorien,
|
||
Plugins, Einstellungen, Logs
|
||
- Geräte-Seite: anlegen, löschen, **„Jetzt scannen"-Button** pro Gerät
|
||
- Dienste-Seite: Inline-Bearbeitung von Name/Kategorie/Alias/Reihenfolge, Favoriten-Toggle
|
||
- Kategorien-Seite: anlegen, umbenennen, löschen, **natives Drag & Drop** (kein
|
||
zusätzliches Package nötig)
|
||
- Scanner-Seite: FritzBox-Trigger + Sammel-Scan aller Geräte
|
||
- Logs-Seite: Scan-Historie (neue `scan_logs`-Tabelle, jeder Scan-Versuch wird protokolliert)
|
||
- Einstellungen: Live-Backend-Status + Theme-Umschalter
|
||
- Plugins: ehrlicher Hinweis, dass das Plugin-System noch nicht existiert
|
||
(statt einer vorgetäuschten Funktion)
|
||
|
||
> Verifiziert per Docker-Build-Simulation (Frontend + Backend inkl.
|
||
> `pnpm deploy --prod`) und Backend-Smoke-Test aller von den Admin-Seiten
|
||
> verwendeten Endpunkte. Die UI selbst konnte in dieser Umgebung nicht in
|
||
> einem echten Browser durchgeklickt werden (kein Browser-Tool verfügbar) –
|
||
> Verifikation stützt sich auf erfolgreichen TypeScript-/Vite-Build und
|
||
> Codeprüfung.
|
||
|
||
## Commit 7 — PWA
|
||
|
||
- Manifest, Service Worker, Offline-Grundfunktion, Installierbarkeit
|
||
|
||
## Commit 8 — Plugin-System
|
||
|
||
- Plugin-Schnittstelle zum Registrieren von Scannern, Import von Geräten,
|
||
Erweitern von Menüs, Bereitstellen von Icons
|