EntwicklerMitarbeiter-Handbuch

Build

Wie du den sellx Hub aus dem Quellcode baust - von der Frontend-Dist ueber das .NET-Sidecar bis zum NSIS-Installer.

Entwickler-Handbuch · Development

Hinweis (historische Dateien): mkdocs.yml und requirements-docs.txt im Repo-Root bleiben für eine eventuelle spätere MkDocs-basierte Variante der Endkunden-Doku reserviert. Der aktive Docs-Build läuft über sellx-docs/ (Vite + React + shadcn/ui) und wird vom CI-Workflow .github/workflows/docs.yml auf GitHub Pages deployt.

Voraussetzungen

ToolVersionZweck
Node.js20+Frontend-Toolchain (Vite, npm)
npm10+Package-Manager
Rust1.75+Tauri-Shell
.NET SDK8.0Sidecar
WebView2 RuntimeaktuellWindows 10/11 hat es vorinstalliert
Windows10/11 (64-bit)Build & Run

Repository-Layout

textrepository.txt
sellx-hub/
├── sellx-hub/             ← Tauri-App
│   ├── src/                 (React-Frontend)
│   ├── src-tauri/           (Rust-Shell + tauri.conf.json)
│   └── package.json
├── sellx-sidecar/         ← .NET 8 Sidecar
│   └── SellxSidecar/
├── pilot-plugins/         ← Demo-Plugins zum Testen
├── docs/                  ← Handbuch (dieses Werk)
└── mkdocs.yml             ← MkDocs-Config

Frontend bauen

bashfrontend-build.sh
cd sellx-hub
npm install
npm run build          # erzeugt dist/

Dev-Modus mit Hot-Reload:

bashfrontend-dev.sh
cd sellx-hub
npm run dev
# Öffnet Vite-DevServer auf http://localhost:5173
# Aber ohne Tauri-IPC → Tauri-Commands sind gemockt

Für volle Tauri-Integration:

bashtauri-dev.sh
cd sellx-hub
npm run tauri dev
# Startet Tauri-Shell, lädt Sidecar, öffnet WebView

Sidecar bauen

bashsidecar-build.sh
cd sellx-sidecar/SellxSidecar
dotnet publish -c Release -r win-x64 --self-contained false -o ./bin/Release

Output: bin/Release/SellxSidecar.exe + DLLs

Wichtig: <OutputType>WinExe</OutputType> in SellxSidecar.csproj — sonst öffnet sich beim Start ein Konsolen-Fenster.

Tauri-Installer bauen

Voraussetzungen:

  1. Frontend dist/ ist gebaut (npm run build)
  2. Sidecar ist gebaut (dotnet publish ...)
  3. Sidecar-Files sind nach sellx-hub/src-tauri/sidecar/ kopiert

Dann:

bashtauri-build.sh
cd sellx-hub
npm run tauri build

Output:

  • sellx-hub/src-tauri/target/release/bundle/nsis/sellx-hub_0.1.0_x64-setup.exe (NSIS-Installer)
  • sellx-hub/src-tauri/target/release/sellx-hub.exe (Portable EXE)

Sidecar in Tauri einbinden

tutorials/tauri.conf.json muss die Sidecar-Files als resources deklarieren:

jsontauri.conf.json
{
  "bundle": {
    "resources": {
      "sidecar/SellxSidecar.exe": "sellx-sidecar/SellxSidecar.exe",
      "sidecar/e_sqlite3.dll": "sellx-sidecar/e_sqlite3.dll",
      "sidecar/Microsoft.Data.SqlClient.SNI.dll": "sellx-sidecar/Microsoft.Data.SqlClient.SNI.dll",
      "sidecar/msalruntime.dll": "sellx-sidecar/msalruntime.dll",
      "sidecar/WebView2Loader.dll": "sellx-sidecar/WebView2Loader.dll"
    },
    "targets": ["nsis"]
  }
}

Beim Build werden die Files in den Bundle-Output kopiert.

Sidecar-Lifecycle

tutorials/src-tauri/src/main.rs startet den Sidecar beim App-Start:

rustmain.rs
.setup(|app| {
    let state = app.state::<Arc<SidecarState>>().inner().clone();
    tauri::async_runtime::spawn(async move {
        if let Err(e) = start_sidecar(state).await {
            error!("Failed to start sidecar: {}", e);
        }
    });
    Ok(())
})

start_sidecar:

  1. Liest Sidecar-Path (relativ zur EXE)
  2. Startet Prozess via tokio::process::Command
  3. Wartet bis sidecar-port.txt geschrieben ist (max. 15s)
  4. Liest Port und konfiguriert HTTP-Client

Beim App-Close wird der Sidecar automatisch beendet (Windows killt Child-Processes).

Build-Skripte

Im Repo-Root gibt es optional ein build.sh / build.ps1-Skript (geplant) für One-Command-Builds:

bashbuild.sh
# Geplant: alle Komponenten bauen + Installer erzeugen
./build.sh