Offline Anwendung: BudgetButlerWeb
Menu
Weitere Seiten
Inhaltsverzeichnis
- Installation in Arch Linux mittels AUR
- Installation in Arch Linux mittels PKGBUILD
- Installation mit docker / docker-compose
- Manuelle Installation (Linux, mit Anpassungen aber auch für Windows und MacOS)
- Updates
- Umgebungsvariablen
- Betrieb mit Docker / Docker-Compose
- Migration von Version 3.0.0 auf 4.0.0 (von Python Client auf Rust Client)
- Technischer Ansatz
Installation in Arch Linux mittels AUR
Das Paket budgetbutlerweb-desktop
installieren und die Applikation über den Befehlbudgetbutlerweb
oder über das
Anwendungsicon starten.
Installation in Arch Linux mittels PKGBUILD
- Das Repository klonen und in das Verzeichnis wechseln:
git clone https://github.com/SebastianRzk/BudgetButlerWeb && cd BudgetButlerWeb
- Das Paket bauen
makepkg
- Das Paket installieren
sudo pacman -U budgetbutlerweb-desktop-*.pkg.tar.zst
- Anwendung über das Anwendungsicon starten oder über den Befehl
budgetbutlerweb
.
Installation mit docker / docker-compose
Nutzung von fertigem Image aus Docker-Hub
Mithilfe von github-actions werden automatisch docker-images gebaut und in docker-hub gepublished.
Wie die Anwendung am besten in Docker konfiguriert wird, kann dem docker-compose.yml
aus dem Ordner
docker-compose-examples/budget_butler_desktop
entnommen werden.
Für x86_64
kann das tag latest
verwendet werden, für arm64
das tag latest-arm64
(siehe
auch Docker-Hub).
Selbst gebautes Docker-Image
Neben dem fertigen Image kann die Anwendung auch selbst gebaut werden.
Im Ordner docker-compose-examples/budget_butler_desktop_local_build
befindet sich ein shell-script, welches ein
Docker-Image baut und das danebenliegende docker-compose.yml
startet.
Manuelle Installation (Linux, mit Anpassungen aber auch für Windows und MacOS)
Systemvoraussetzungen
- Rust / Cargo
- Versionierung: git
- Anwendungsicon sowie Startup-Skript: shell und npm (für Electron-Client)
- Falls nicht der Electron-Client verwendet wird: Webbrowser (z.B. Firefox oder Chromium)
Installation
Das Git-Repository klonen:
git clone https://github.com/SebastianRzk/BudgetButlerWeb.git
Ins Projektverzeichnis wechseln:
cd BudgetButlerWeb
Anwendung bauen
sh build.sh
Optional: Anwendungsicon anlegen:
sh create_desktop_shortcut.sh
BudgetButlerWeb starten
Die Applikation kann über das Anwendungsicon gestartet werden
Alternativ kann der Electron Client manuell gestartet werden, dieser startet das Rust-Backend automatisch und stoppt dieses, wenn das Fenster geschlossen wird.
cd ./target/ && ./application-wrapper/budgetbutlerweb
Alternativ kann der Server auch manuell gestartet werden:
cd ./target/ && ./budgetbutlerweb
Über einen Webbrowser kann die Webseite nun lokal erreicht werden:
http://localhost:5000
Updates
BudgetButlerWeb aktualisieren:
# Code aktualisieren
git pull
# Anwendung neu bauen
build.sh
Softwaretests ausführen
Alle Softwaretests mit cargo starten:
cd butler_offline
cargo test
Umgebungsvariablen
Wenn die Anwendung lokal auf dem Computer betrieben wird, müssen keine Umgebungsvariablen gesetzt werden.
Sollte die Anwendung im Netzwerk betrieben werden, können/müssen folgende Umgebungsvariablen gesetzt werden, damit die Anwendung korrekt mit der Begleiter-App kommunizieren kann:
Wert | Default | Beschreibung |
---|---|---|
BUDGETBUTLER_APP_ROOT | localhost | Adresse, unter der die Anwendung erreichbar ist. |
BUDGETBUTLER_APP_PORT | 5000 | Port, unter dem die Anwendung erreichbar ist. |
BUDGETBUTLER_APP_PROTOCOL | http | Protokoll, unter dem die Anwendung erreichbar ist |
Werden hier Werte geändert, muss die Umgebungsvariable ALLOWED_REDIRECTS
in der Begleiter-App entsprechend angepasst
werden, damit sich die lokale App bei der Begleiter-App anmelden kann.
Betrieb mit Docker / Docker-Compose
Hier liegen gebaute Docker-Images und hier sind Deployment Beispiele zu finden.
Migration von Version 3.0.0 auf 4.0.0 (von Python Client auf Rust Client)
- Cargo installieren
-
Daten automatisch mit migrieren (bitte #dein Nutzername# durch deinen Nutzernamen ersetzen)
python database_migrator/main.py ./Database_#dein Nutzername#.csv
Technischer Ansatz
Technologie
Die Offline-Anwendung ist ein Server, welcher die Datenhaltung und die Logik der Anwendung übernimmt und eine Oberfläche in Form einer Webseite bereitstellt. Diese Webseite wird mittels Electron in eine Desktop-Anwendung umgewandelt. Theoretisch ist es auch möglich, die Webseite in einem Webbrowser zu öffnen und BudgetButlerWeb dort ohne Einschränkung zu Nutzen.
Maßgebliche Technologien:
- actix-web als Webserver
- askama als Template-Engine (ähnlich wie Jinja2)
- electron-forge als Desktop-Client
Struktur
Die Anwendung befindet sich in butler_offline
.
Hier sind die folgenden Verzeichnisse zu finden:
src/
: Rust-Quelltext der Anwendungsrc/main.rs
: Hauptdatei der Anwendung, welche den Webserver startet, die Routen in Form von Methoden einhängt und das initiale Setup durchführtsrc/budgetbutler
: Fachlicher Quelltextsrc/io
: Ein- und Ausgabe der Anwendung, beispielsweise für das Lesen und Schreiben von CSV-Dateien, oder für das Rendern von HTML-Dateiensrc/model
: Datenmodell der Anwendung
templates/
: HTML-Dateien, welche mittelsaskama
in die Webseite eingebunden werdenstatic/
: Statische Dateien, wie CSS-Dateien, Schriftarten, Bilder und JavaScript-Dateien
Die Anwendung kann mittels cargo run
gestartet werden. Der Webserver ist dann unter http://localhost:5000
erreichbar.
In application-wrapper
befindet sich der Electron-Client. Dieser startet die Rust-Anwendung und öffnet ein Fenster, in
dem die Webseite angezeigt wird.