95 lines
3.3 KiB
Markdown
95 lines
3.3 KiB
Markdown
<picture>
|
|
<source srcset="https://raw.githubusercontent.com/leptos-rs/leptos/main/docs/logos/Leptos_logo_Solid_White.svg" media="(prefers-color-scheme: dark)">
|
|
<img src="https://raw.githubusercontent.com/leptos-rs/leptos/main/docs/logos/Leptos_logo_RGB.svg" alt="Leptos Logo">
|
|
</picture>
|
|
|
|
# bytemalte_de - Community Chat
|
|
|
|
Dies ist ein Fullstack-Projekt für einen modernen Gruppenchat, entwickelt mit dem [Leptos](https://github.com/leptos-rs/leptos) Web-Framework, dem [cargo-leptos](https://github.com/akesson/cargo-leptos) Tool, [Axum](https://github.com/tokio-rs/axum) und [SQLite](https://sqlite.org/).
|
|
|
|
## Projekt-Setup
|
|
|
|
Stelle sicher, dass du die notwendige Umgebungsvariable für die Datenbank konfiguriert hast. Erstelle eine `.env` Datei im Hauptverzeichnis:
|
|
|
|
```bash
|
|
DATABASE_URL="sqlite:community.db"
|
|
Initialisiere die Datenbank und führe die Migrationen aus:
|
|
|
|
Bash
|
|
|
|
sqlx db create
|
|
sqlx migrate run
|
|
Damit werden die Tabellen für Benutzer und Nachrichten in der Datei community.db angelegt.
|
|
|
|
Running your project
|
|
Um den Entwicklungs-Server mit Hot-Reload zu starten, führe folgenden Befehl aus:
|
|
|
|
Bash
|
|
|
|
cargo leptos watch
|
|
Das Projekt wird kompiliert (WASM für das Frontend und Binärdatei für das Backend) und ist unter http://127.0.0.1:3000 erreichbar.
|
|
|
|
Installing Additional Tools
|
|
Da dieses Projekt kryptografische Funktionen (bcrypt) und Datenbank-Abfragen nutzt, werden zusätzliche Tools und Konfigurationen benötigt:
|
|
|
|
rustup target add wasm32-unknown-unknown - Ermöglicht die Kompilierung von Rust zu WebAssembly.
|
|
|
|
cargo install sqlx-cli --no-default-features --features sqlite - Tool für Datenbank-Migrationen.
|
|
|
|
sudo dnf install dart-sass (Fedora) oder npm install -g sass - Zum Kompilieren der main.scss.
|
|
|
|
WASM-Krypto: Die Datei .cargo/config.toml muss existieren, um das wasm_js Backend für getrandom zu aktivieren:
|
|
|
|
Ini, TOML
|
|
|
|
[target.wasm32-unknown-unknown]
|
|
rustflags = ["--cfg", "getrandom_backend=\"wasm_js\""]
|
|
Compiling for Release
|
|
Bash
|
|
|
|
cargo leptos build --release
|
|
Dieser Befehl generiert die optimierte Server-Binärdatei in target/release/bytemalte_de und das Site-Paket (WASM/JS/CSS) in target/site.
|
|
|
|
Testing Your Project
|
|
Bash
|
|
|
|
cargo leptos end-to-end
|
|
Cargo-leptos nutzt Playwright für End-to-End-Tests. Die Tests befinden sich im Verzeichnis end2end/tests.
|
|
|
|
Executing a Server on a Remote Machine (Ubuntu 24.04 VPS)
|
|
Nach einem erfolgreichen cargo leptos build --release werden folgende Dateien auf dem Zielserver benötigt:
|
|
|
|
Die Server-Binärdatei: target/release/bytemalte_de
|
|
|
|
Das Site-Verzeichnis: target/site
|
|
|
|
Die Datenbank: community.db
|
|
|
|
Die Umgebungsvariable: .env
|
|
|
|
Die Verzeichnisstruktur auf dem VPS sollte wie folgt aussehen:
|
|
|
|
Plaintext
|
|
|
|
bytemalte_de
|
|
site/
|
|
community.db
|
|
.env
|
|
Setze die folgenden Umgebungsvariablen für den Betrieb (z.B. in einem Systemd-Service):
|
|
|
|
Bash
|
|
|
|
export LEPTOS_OUTPUT_NAME="bytemalte_de"
|
|
export LEPTOS_SITE_ROOT="site"
|
|
export LEPTOS_SITE_PKG_DIR="pkg"
|
|
export LEPTOS_SITE_ADDR="0.0.0.0:3000"
|
|
export DATABASE_URL="sqlite:community.db"
|
|
Starte die Anwendung durch Ausführen der Binärdatei: ./bytemalte_de
|
|
|
|
Licensing
|
|
Dieses Projekt basiert auf dem Leptos Axum Starter Template. Die spezifische Chat-Logik und das Design wurden für bytemalte_de angepasst.
|
|
|
|
|
|
Damit ist deine Dokumentation jetzt vollständig und professionell strukturiert!
|
|
|
|
**Gibt es noch etwas, das ich an der README anpassen soll, oder bist du bereit für das erste Deployment?** |