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
| Tool | Version | Zweck |
|---|---|---|
| Node.js | 20+ | Frontend-Toolchain (Vite, npm) |
| npm | 10+ | Package-Manager |
| Rust | 1.75+ | Tauri-Shell |
| .NET SDK | 8.0 | Sidecar |
| WebView2 Runtime | aktuell | Windows 10/11 hat es vorinstalliert |
| Windows | 10/11 (64-bit) | Build & Run |
Repository-Layout
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-ConfigFrontend bauen
cd sellx-hub
npm install
npm run build # erzeugt dist/Dev-Modus mit Hot-Reload:
cd sellx-hub
npm run dev
# Öffnet Vite-DevServer auf http://localhost:5173
# Aber ohne Tauri-IPC → Tauri-Commands sind gemocktFür volle Tauri-Integration:
cd sellx-hub
npm run tauri dev
# Startet Tauri-Shell, lädt Sidecar, öffnet WebViewSidecar bauen
cd sellx-sidecar/SellxSidecar
dotnet publish -c Release -r win-x64 --self-contained false -o ./bin/ReleaseOutput: bin/Release/SellxSidecar.exe + DLLs
Wichtig: <OutputType>WinExe</OutputType> in SellxSidecar.csproj — sonst öffnet sich beim Start ein Konsolen-Fenster.
Tauri-Installer bauen
Voraussetzungen:
- Frontend
dist/ist gebaut (npm run build) - Sidecar ist gebaut (
dotnet publish ...) - Sidecar-Files sind nach
sellx-hub/src-tauri/sidecar/kopiert
Dann:
cd sellx-hub
npm run tauri buildOutput:
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:
{
"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:
.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:
- Liest Sidecar-Path (relativ zur EXE)
- Startet Prozess via
tokio::process::Command - Wartet bis
sidecar-port.txtgeschrieben ist (max. 15s) - 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:
# Geplant: alle Komponenten bauen + Installer erzeugen
./build.sh