better Readme without Markdown yet
This commit is contained in:
105
README.md
105
README.md
@@ -1,90 +1,99 @@
|
||||
# bytemalte_de - Community Chat
|
||||
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/).
|
||||
Dies ist ein Fullstack-Projekt für einen modernen Gruppenchat, entwickelt mit:
|
||||
- Leptos – Web-Framework aus Rust
|
||||
- cargo-leptos – Fullstack-Build-Tool
|
||||
- Axum – Webserver-Framework
|
||||
- SQLite – Leichte Embedded-Datenbank
|
||||
|
||||
## Projekt-Setup
|
||||
|
||||
Stelle sicher, dass du die notwendige Umgebungsvariable für die Datenbank konfiguriert hast. Erstelle eine `.env` Datei im Hauptverzeichnis:
|
||||
Projekt-Setup
|
||||
|
||||
```bash
|
||||
1. Datenbank konfigurieren
|
||||
|
||||
Erstelle im Hauptverzeichnis eine .env Datei mit folgendem Inhalt:
|
||||
DATABASE_URL="sqlite:community.db"
|
||||
Initialisiere die Datenbank und führe die Migrationen aus:
|
||||
|
||||
Bash
|
||||
|
||||
Initialisiere anschließend die Datenbank und führe Migrationen aus:
|
||||
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
|
||||
2. Entwicklungsserver starten
|
||||
|
||||
Starte das Projekt mit Hot-Reload:
|
||||
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:
|
||||
Nach erfolgreicher Kompilierung (WASM für das Frontend und Binärdatei für das Backend) ist die Anwendung unter
|
||||
http://127.0.0.1:3000 erreichbar.
|
||||
|
||||
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.
|
||||
Zusätzliche Tools und Konfiguration
|
||||
|
||||
sudo dnf install dart-sass (Fedora) oder npm install -g sass - Zum Kompilieren der main.scss.
|
||||
Dieses Projekt nutzt kryptografische Funktionen (bcrypt) und Datenbankzugriffe. Stelle sicher, dass folgende Tools installiert sind:
|
||||
|
||||
WASM-Krypto: Die Datei .cargo/config.toml muss existieren, um das wasm_js Backend für getrandom zu aktivieren:
|
||||
rustup target add wasm32-unknown-unknown
|
||||
cargo install sqlx-cli --no-default-features --features sqlite
|
||||
|
||||
Ini, TOML
|
||||
SASS Compiler:
|
||||
Fedora:
|
||||
sudo dnf install dart-sass
|
||||
oder mit npm:
|
||||
npm install -g sass
|
||||
|
||||
Füge folgende Konfiguration in .cargo/config.toml hinzu, um das WASM-Krypto-Backend zu aktivieren:
|
||||
[target.wasm32-unknown-unknown]
|
||||
rustflags = ["--cfg", "getrandom_backend=\"wasm_js\""]
|
||||
Compiling for Release
|
||||
Bash
|
||||
|
||||
|
||||
Produktion / Release Build
|
||||
|
||||
Erzeuge eine optimierte Release-Version:
|
||||
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
|
||||
Dieser Befehl erstellt:
|
||||
- Die Server-Binärdatei unter target/release/bytemalte_de
|
||||
- Das Frontend-Paket (WASM/JS/CSS) unter target/site
|
||||
|
||||
|
||||
Tests ausführen
|
||||
|
||||
Führe End-to-End-Tests mit Playwright aus:
|
||||
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 Tests befinden sich im Verzeichnis end2end/tests.
|
||||
|
||||
Die Server-Binärdatei: target/release/bytemalte_de
|
||||
|
||||
Das Site-Verzeichnis: target/site
|
||||
Deployment auf einem entfernten Server (Ubuntu 24.04 VPS)
|
||||
|
||||
Die Datenbank: community.db
|
||||
Nach cargo leptos build --release benötigst du auf dem Zielserver folgende Dateien:
|
||||
- target/release/bytemalte_de
|
||||
- target/site/
|
||||
- community.db
|
||||
- .env
|
||||
|
||||
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
|
||||
Beispielhafte Verzeichnisstruktur:
|
||||
bytemalte_de/
|
||||
├── site/
|
||||
├── community.db
|
||||
└── .env
|
||||
|
||||
Exportiere die Umgebungsvariablen (z. B. in einem Systemd-Service):
|
||||
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.
|
||||
Starte die Anwendung:
|
||||
./bytemalte_de
|
||||
|
||||
|
||||
Damit ist deine Dokumentation jetzt vollständig und professionell strukturiert!
|
||||
Lizenz & Urheberrecht
|
||||
|
||||
**Gibt es noch etwas, das ich an der README anpassen soll, oder bist du bereit für das erste Deployment?**
|
||||
Dieses Projekt basiert auf dem Leptos Axum Starter Template.
|
||||
Die spezifische Chat-Logik, das Styling und UI-Design wurden individuell für bytemalte_de entwickelt.
|
||||
|
||||
Entwickelt mit ❤️ von bytemalte
|
||||
|
||||
Reference in New Issue
Block a user