Architektur-Review: Tauri 2 Best Practices und technische Schulden #7
Labels
No labels
agent:done
agent:ready
agent:working
area:analytics
area:chatbot
area:community
area:content
area:hardware
area:health
area:media
area:monetization
area:overlays
area:productivity
area:streaming
bug
duplicate
effort:large
effort:medium
effort:small
enhancement
good-first-issue
help wanted
invalid
priority:backlog
priority:critical
priority:high
priority:low
priority:medium
question
quick-win
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frank/streamertool#7
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kontext
Streamertool ist eine Tauri-2-Desktop-App (Rust + React/Vite) mit eingebettetem lokalem Overlay-Server (Axum: HTTP, WebSocket, SSE), Connector-Layer (Twitch, OBS, Streamer.Bot), Event-Bus, SQLite und ZIP-Extensions.
Die V1-Funktionalität steht; vor weiterem Ausbau (#1–#6) soll die Architektur systematisch geprüft und an etablierte Tauri-2- und Rust-Desktop-Best-Practices angeglichen werden.
Ist-Zustand (Kurzüberblick):
get_server_infoals Tauri-Commandblock_onimsetup-Hook für Bootstrapcsp: nullintauri.conf.json; Capabilitydefaultmitcore:defaultArc<AppState>viaapp.manage(); Tokio-Tasks für Server + Connector-SupervisorAppResult/thiserror(Rust) undStringin CommandsZiel
Review-Bereiche
A. Tauri-App-Struktur & Lifecycle
lib.rsvs.main.rs, Plugin-Registrierung,setup-Hookblock_onim Setup) — Alternativen:tauri::async_runtime::spawn, State-Initialisierung mitOnceCell/ManagedStatetauri.conf.json)overlays,extensions) — Dev vs. Release-PfadeB. IPC & Frontend-Integration
specta/tauri-spectaoder gemeinsame Types (Rust ↔ TS)Stringin Commands@tauri-apps/api-Nutzung, Fallback-Port-Logik inapi.tsC. Security (Tauri 2)
core:defaulttauri.conf.json→app.security(dangerousRemoteDomainIpcAccess, assetProtocol, …)D. Rust-Backend-Architektur
connectors/,server/,events/,db/,extensions/AppState-Design: Shared State,RwLock-Granularität, Testbarkeitthiserror/anyhow-Konsistenz, keineexpect/unwrapin ProduktionspfadenE. Lokaler Server (Axum)
0.0.0.0, TLS, DiscoveryF. Persistenz & Daten
G. Observability & Debugging
tracing/tracing-subscriber: strukturierte Logs, Log-RotationH. Build, CI & Distribution
Cargo.toml: Feature-Flags,tokiofull → gezielte Featuresmake civs. vollständige Integrationsteststauri-plugin-updater) — Bedarf und StrategieI. Tests
TestClient)J. Dokumentation
AGENTS.md/ README um Architektur-Sektion ergänzenDeliverables
Akzeptanz
null/ blinddefault)block_on/expect-Hotspots mehr im Startup-Pfad ohne BegründungBezug zu bestehendem Backlog
Vorgehen (Vorschlag)
tauri.conf.json/ CapabilitiesAbschluss
Umgesetzt mit Commit
665520c:expect, begründeter synchroner BootstrapVerifikation
make cierfolgreich/health→ 200,/api/settingsohne Token → 401, mit Bearer-Token → 200Folge-Backlog
Damit sind die Akzeptanzkriterien von #7 erfüllt.