Files
flutter_tank_web_app/DEPLOYMENT.md

3.6 KiB

Backend-Proxy Setup - Deployment Anleitung

📋 Übersicht

Diese Anleitung erklärt, wie Sie die Appwrite Function für Geocoding deployen, um CORS-Probleme zu vermeiden.

🚀 Deployment Schritte

1. Appwrite Console öffnen

Navigieren Sie zu Ihrer Appwrite Console: https://appwrite.joshihomeserver.ipv64.net/console

2. Function erstellen

  1. Klicken Sie auf Functions im Menü
  2. Klicken Sie auf Create Function
  3. Füllen Sie die Details aus:
    • Name: geocode-location
    • Function ID: Wird automatisch generiert (z.B. 65a123456789abc)
    • Runtime: Wählen Sie Node.js 18.0 oder höher
    • Execute Access: Any (damit alle eingeloggten User die Function nutzen können)

3. Code hochladen

Option A: Über die Console

  1. Gehen Sie zum Tab Deployment
  2. Erstellen Sie ein neues Deployment
  3. Wählen Sie Manual als Deployment-Methode
  4. Laden Sie folgende Dateien hoch:
    • appwrite_functions/geocode-location/main.js
    • appwrite_functions/geocode-location/package.json
  5. Setzen Sie Entrypoint: main.js
  6. Klicken Sie auf Deploy

Option B: Über CLI (wenn Appwrite CLI installiert)

cd /home/digitalman/Development/flutter_tank_web_app
appwrite deploy function

4. Function ID in Flutter App eintragen

  1. Nach erfolgreichem Deployment kopieren Sie die Function ID
  2. Öffnen Sie lib/config/environment.dart
  3. Ersetzen Sie YOUR_FUNCTION_ID_HERE mit Ihrer Function ID:
static const String appwriteGeocodeFunctionId = '65a123456789abc'; // Ihre ID hier

5. Testen

In der Appwrite Console:

  1. Gehen Sie zu Ihrer Function
  2. Klicken Sie auf Execute
  3. Verwenden Sie diesen Test-Body:
{
  "lat": 47.9385165,
  "lon": 13.762887,
  "apiKey": "NTYxMDQ3NTY2OWI3NDI5ZGIzZWIxOWNiNTNhMDEwODY6YTQ4MTJhYzYtYmYzOC00ZmE4LTk4YzYtZDBjNzYyZTAyNjBk"
}
  1. Erwartete Response:
{
  "success": true,
  "location": "Straßenname Hausnummer, PLZ Stadt",
  "coordinates": {
    "lat": 47.9385165,
    "lon": 13.762887
  }
}

In der Flutter App:

  1. Starten Sie die App neu
  2. Erstellen Sie einen neuen Tankeintrag
  3. Die Standortabfrage sollte nun über den Backend-Proxy laufen
  4. Sie sollten eine Erfolgs-Snackbar mit der Adresse sehen

🔧 Troubleshooting

Function ID nicht gesetzt

Problem: Console-Warnung: "Appwrite Function ID nicht konfiguriert" Lösung: Schritt 4 nochmal durchführen und App neu starten

Function Execution fehlgeschlagen

Problem: Status ist nicht "completed" Lösung:

  1. Prüfen Sie die Logs in der Appwrite Console
  2. Stellen Sie sicher, dass die Runtime korrekt ist
  3. Prüfen Sie ob alle Dateien hochgeladen wurden

PTV API Fehler

Problem: "PTV API Fehler - Status Code: 401" Lösung: API Key in environment.dart überprüfen

CORS weiterhin ein Problem

Problem: Immer noch CORS-Fehler Lösung:

  1. Stellen Sie sicher, dass die alte getNearbyLocation Methode nicht mehr verwendet wird
  2. Prüfen Sie, dass appwriteService.geocodeLocation aufgerufen wird
  3. Cachen leeren und App neu builden

Erfolgskriterien

Nach erfolgreichem Deployment sollten Sie:

  • Eine Erfolgs-Snackbar mit Adresse sehen (nicht nur Koordinaten)
  • Keine CORS-Fehler mehr in der Browser-Console
  • In den Logs: "📍 Verwende Backend-Proxy für Geocoding..."
  • In den Logs: " Geocoding erfolgreich: [Adresse]"

📝 Alternative ohne Deployment

Falls Sie die Function nicht deployen möchten, wird automatisch auf Koordinaten-Speicherung zurückgegriffen. Die App funktioniert weiterhin, speichert aber Lat: XX.XXXXXX, Lon: YY.YYYYYY statt der Adresse.