Betax Transport Bestellung
Dieses Projekt ist eine Ktor-Anwendung zur Bestellung von Behindertentransporten bei Betax. Die App nutzt eine Weboberfläche zur Erfassung der Fahrtdaten und generiert mithilfe von KI (Ollama) eine professionelle E-Mail für die Bestellung.
Funktionen
- Web-Frontend: Erfassung von Name, Geburtsdatum, Abfahrtsort, Zielort, Terminzeit, Dauer, Rückfahrt und Hilfsmitteln.
- Automatische Abfahrtszeit: Berechnet die empfohlene Abfahrtszeit basierend auf der Fahrzeit (Mock-Wert 25 Min) und einem Zeitpuffer (15 Min).
- KI-E-Mail-Generierung: Nutzt das Koog Framework, um aus den Formulardaten eine fertige E-Mail-Bestellung zu erstellen.
- HTMX Integration: Dynamische Aktualisierung der Seite ohne kompletten Reload nach Absenden des Formulars.
Voraussetzungen
Für die KI-Funktionalität muss Ollama lokal installiert sein und laufen.
- Modell:
ministral-3:latest(oder ein anderes konfiguriertes Modell). - Ollama URL: Standardmäßig
http://localhost:11434.
Stellen Sie sicher, dass das Modell geladen ist:
ollama run ministral-3:latest
Projektstruktur
server: Die Haupt-Ktor-Anwendung (Netty).web: (Optional) Kotlin WASM-Komponenten.
Starten der App
Die App startet einen lokalen Webserver. Standardmäßig ist dieser unter http://localhost:8080 erreichbar.
Mit Gradle ausführen
Um den Server lokal zu starten, führen Sie im Projektverzeichnis folgenden Befehl aus:
./gradlew :server:run
Sobald der Server läuft, sehen Sie in der Konsole:
Responding at http://0.0.0.0:8080
Build & Ausführung als Fat-JAR
./gradlew :server:buildFatJar
java -jar server/build/libs/server-all.jar
Konfiguration
Die Konfiguration der Anwendung (z.B. Port, Ollama URL, E-Mail-Einstellungen) befindet sich in:
server/src/main/resources/application.yaml(Server-Port und E-Mail-Konfiguration für Mailpit)server/src/main/kotlin/Frameworks.kt(Ollama Base URL)
E-Mail-Konfiguration (Testen mit Mailpit)
Für Testzwecke ist die App auf Mailpit konfiguriert:
- Host:
mailpit.rwcloud.ch - Port:
1025 - Sender:
info@rwcloud.ch - Empfänger:
transport@rwcloud.ch
Verwendete Technologien
- Ktor - Web Framework
- HTMX - Dynamische UI
- Koog - LLM Integration
- Kotlin HTML DSL - Type-safe HTML