SwissKnife Docs
SwissKnife verstehen

Architektur

Aufbau, Bereitstellung und Deployment von SwissKnife.

SwissKnife ist eine reine Client-Anwendung. Sie besitzt weder Anwendungs-API noch Datenbank oder Authentifizierungsdienst.

Browser
  → React-Anwendung
    → Bilder: Canvas 2D
    → Audio / Video: FFmpeg WASM (ein Thread, sequenzielle Warteschlange)
    → FFmpeg-Kern: /ffmpeg/ffmpeg-core.js und /ffmpeg/ffmpeg-core.wasm

In der Docker-Produktion:

Nginx ohne Root-Rechte (Port 2501)
  → statische Dateien aus dist/
  → SPA-Fallback auf index.html
  → COOP-/COEP-/CSP-Header (SharedArrayBuffer)

Geprüfter Stack

EbeneAktuelle Wahl
OberflächeReact 19, striktes TypeScript
BuildVite 6, Tailwind CSS 4
BilderCanvas-API
Audio / Video@ffmpeg/ffmpeg 0.12 und lokale Kopie von @ffmpeg/core 0.12.6
ContainerNode 22 Alpine für den Build, Nginx unprivileged 1.27 Alpine zur Laufzeit
PrüfungenESLint, Vitest (npm test), tsc --noEmit

Zwei getrennte Artefakte

ArtefaktBefehlZweck
Standardproduktnpm run buildDocker, GHCR und normales Deployment
Öffentliche Demonpm run build:demoausschließlich die öffentliche Vercel-Demo

Das Dockerfile führt npm run build aus. Die vercel.json des Produkt-Repositories führt npm run build:demo aus. Diese Befehle dürfen nicht vertauscht werden.

Compose-Dateien im Repository

DateiImage-Quelle
docker-compose.ymlghcr.io/lucas-lepajollec/swissknife:latest
docker-compose.build.ymllokaler Build aus dem Dockerfile

Die Standardinstallation im Homelab lädt das veröffentlichte Image, statt den Checkout jedes Mal neu zu bauen.

Auf dieser Seite