5.0 KiB
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/DELETEaufdevicesundservices - 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
rankServicesauspackages/sharedan 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
ResultsListinpackages/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
categorybei betroffenen Diensten aufnull, 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/:idundPOST /api/scan/fritzbox– ausschließlich manuell auslösbar, kein automatischer/zeitgesteuerter ScanupsertDeviceFromScan/upsertServiceFromScanin 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 (erledigt)
vite-plugin-pwamit generiertem Manifest (manifest.webmanifest) und Service Worker (Workbox,generateSW-Modus)- Echte Icons (192/512, jeweils normal + maskable,
apple-touch-icon.png,favicon.svg) unterapps/frontend/public/ - App-Shell wird precached;
/api/*läuft überNetworkFirstmit 3s-Timeout und Cache-Fallback – Suche funktioniert damit auch offline mit dem zuletzt geladenen Datenstand nginx.conf:sw.js/manifest.webmanifestexplizit von der 7-Tage-Cache-Regel ausgenommen (sonst kommen Updates bei installierten Nutzern nie an), korrekter MIME-Type für das Manifest gesetzt
Verifiziert: Manifest gegen Installierbarkeits-Anforderungen geprüft (512er-Icon, maskable Icon, alle Pflichtfelder vorhanden), alle Assets über einen echten HTTP-Server abgerufen (200 OK, korrekte Content-Types), generierter Service-Worker- Code inspiziert (Precache-Liste + NetworkFirst-Route bestätigt), vollständige Docker-Build-Simulation durchlaufen. Die tatsächliche "Zum Homescreen hinzufügen"- Installation konnte mangels Browser in dieser Umgebung nicht getestet werden.
Commit 8 — Plugin-System
- Plugin-Schnittstelle zum Registrieren von Scannern, Import von Geräten, Erweitern von Menüs, Bereitstellen von Icons