# LaunchPad Ein moderner, minimalistischer Homelab-Launcher – inspiriert von Raycast, Spotlight, Arc und Linear. Tippe wenige Buchstaben, finde sofort den gewünschten Dienst, drücke Enter. Kein überladenes Dashboard. Keine Kacheln. Im Mittelpunkt steht eine extrem schnelle Suche. ## Quickstart (Docker) ```bash git clone LaunchPad cd LaunchPad docker compose up -d --build ``` - Frontend: http://localhost:8080 - Backend / Health-API: http://localhost:3001/api/health ## Quickstart (lokale Entwicklung) Voraussetzungen: Node.js ≥ 20, pnpm ≥ 9. ```bash pnpm install pnpm dev:backend # startet Fastify auf :3001 pnpm dev:frontend # startet Vite auf :5173 (proxyt /api zum Backend) ``` ## Projektstruktur ``` LaunchPad │ ├── apps │ ├── frontend React + Vite + TypeScript + TailwindCSS │ └── backend Fastify + TypeScript + Drizzle ORM + SQLite │ ├── packages │ ├── shared gemeinsame Typen (Device, Service) + Such-Ranking-Logik │ └── ui gemeinsame UI-Komponenten (SearchInput, StatusBadge) │ ├── docker zusätzliche Docker-Hilfsdateien ├── docs Projektdokumentation ├── pnpm-workspace.yaml ├── docker-compose.yml └── tsconfig.base.json ``` ## Stand dieses Commits Dieser erste Commit liefert ein lauffähiges Grundgerüst: - ✅ pnpm-Monorepo mit `apps/*` und `packages/*` - ✅ Fastify-Backend mit `/api/health`-Endpunkt - ✅ SQLite-Datenbank (better-sqlite3) inkl. Schema für `devices`, `services`, `categories` (Drizzle ORM), automatisch angelegt beim Start - ✅ React-Startseite mit Suchfeld, Dark-/Light-Mode und Live-Statusanzeige des Backends - ✅ Tastaturkürzel `/` und `Strg+K` zum Fokussieren der Suche - ✅ Docker-Compose-Setup: `docker compose up -d --build` startet Frontend + Backend - ✅ Persistentes Docker-Volume für die SQLite-Datenbank - ✅ REST-API für Geräte & Dienste (`/api/devices`, `/api/services`), Zod-validiert, mit Repository-Layer über Drizzle (siehe `apps/backend/src/db/repositories`) - ✅ Suche im Frontend gegen echte Backend-Daten (TanStack Query), inkl. Ranking-Logik aus `packages/shared` und Tastatur-Navigation (Pfeiltasten, Enter, Escape) Noch **nicht** enthalten (folgt in den nächsten Commits): - Scanner (FritzBox, DNS, HTTP/HTTPS, Portscan, Softwareerkennung) - Kategorien-Verwaltung & Favoriten-Toggle im UI - Adminbereich, TanStack Router, Plugin-System, PWA-Manifest, shadcn/ui, RHF Siehe [`docs/ROADMAP.md`](./docs/ROADMAP.md) für die geplante Reihenfolge. ## API-Endpunkte (Stand Commit 2) ``` GET /api/health GET /api/devices Liste aller Geräte inkl. ihrer Dienste GET /api/devices/:id POST /api/devices PATCH /api/devices/:id DELETE /api/devices/:id (löscht zugehörige Dienste per Cascade) GET /api/services optional ?deviceId=&category=&favorite=true GET /api/services/:id POST /api/services erfordert existierende deviceId PATCH /api/services/:id DELETE /api/services/:id ``` ## Deployment auf dem Server (xlc-launchpad) ```bash cd /opt/LaunchPad git pull docker compose up -d --build ``` ## Branching Entwicklung erfolgt ausschließlich auf `dev`. `main` bleibt der stabile Branch.