From 98bce1b0da675715b2e5482c0ad61ba21135f62f Mon Sep 17 00:00:00 2001
From: Server-Bibliothek <server-bibliothek@lokal>
Date: Di, 04 Aug 2026 07:00:04 +0200
Subject: [PATCH] Add a desktop client that knows what is installed locally
---
desktop/backend/__main__.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/desktop/backend/__main__.py b/desktop/backend/__main__.py
new file mode 100644
index 0000000..ecf3849
--- /dev/null
+++ b/desktop/backend/__main__.py
@@ -0,0 +1,52 @@
+"""Startpunkt: oeffnet ein natives Fenster und verbindet es mit der Api.
+
+Start: py -m backend (aus dem Ordner `desktop`, im aktivierten venv)
+
+Das Fenster nutzt das WebView2 von Windows — dieselbe Engine, die der Browser
+ohnehin mitbringt. Es wird also kein zweites Chromium ausgeliefert.
+"""
+
+from __future__ import annotations
+
+import sys
+from pathlib import Path
+
+import webview
+
+from .api import Api
+
+# Im Betrieb aus dem Quelltext liegt die gebaute Oberflaeche unter
+# <projekt>/frontend/dist; in der PyInstaller-exe im Bundle-Verzeichnis.
+if getattr(sys, "frozen", False):
+ _BASIS = Path(sys._MEIPASS) # type: ignore[attr-defined]
+else:
+ _BASIS = Path(__file__).resolve().parent.parent
+
+FRONTEND_INDEX = _BASIS / "frontend" / "dist" / "index.html"
+
+_PLATZHALTER_HTML = """
+<!doctype html><html lang="de"><body style="font-family:sans-serif;padding:2rem">
+<h1>Oberfläche noch nicht gebaut</h1>
+<p>Im Ordner <code>desktop/frontend</code> einmal <code>npm install</code> und
+<code>npm run build</code> ausführen, dann erneut starten.</p>
+</body></html>
+"""
+
+
+def main() -> None:
+ api = Api()
+ gemeinsam = {
+ "js_api": api,
+ "width": 1100,
+ "height": 780,
+ "min_size": (820, 600),
+ }
+ if FRONTEND_INDEX.exists():
+ webview.create_window("Software-Bibliothek", url=str(FRONTEND_INDEX), **gemeinsam)
+ else:
+ webview.create_window("Software-Bibliothek", html=_PLATZHALTER_HTML, **gemeinsam)
+ webview.start(http_server=True)
+
+
+if __name__ == "__main__":
+ main()
--
Gitblit v1.9.3