# 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) ```bash 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: ```dart 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: ```json { "lat": 47.9385165, "lon": 13.762887, "apiKey": "NTYxMDQ3NTY2OWI3NDI5ZGIzZWIxOWNiNTNhMDEwODY6YTQ4MTJhYzYtYmYzOC00ZmE4LTk4YzYtZDBjNzYyZTAyNjBk" } ``` 4. Erwartete Response: ```json { "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.