# Lokaler Reverse Proxy Server

Dieser Proxy-Server umgeht CORS-Probleme während der Entwicklung, indem er Anfragen an die PTV Geocoding API weiterleitet.

## 🚀 Installation & Start

### 1. Dependencies installieren (nur Node.js Standard-Module, keine Installation nötig)

Der Server verwendet nur Node.js Built-in Module (`http`, `https`, `url`), daher ist kein `npm install` erforderlich.

### 2. Server starten

```bash
cd proxy-server
node server.js
```

Oder mit npm:
```bash
npm start
```

Der Server läuft dann auf `http://localhost:3000`

## 📡 API Verwendung

**Endpoint:**
```
GET http://localhost:3000/?lat={latitude}&lon={longitude}&apiKey={ptv_api_key}
```

**Beispiel:**
```
http://localhost:3000/?lat=47.9385165&lon=13.762887&apiKey=YOUR_API_KEY
```

**Response (Erfolg):**
```json
{
  "success": true,
  "location": "Hauptstraße 123, 5020 Salzburg",
  "coordinates": {
    "lat": 47.9385165,
    "lon": 13.762887
  },
  "rawData": { ... }
}
```

**Response (Fehler):**
```json
{
  "success": false,
  "error": "Error message",
  "fallbackLocation": "Lat: 47.938517, Lon: 13.762887"
}
```

## 🔧 In Flutter App verwenden

Der Flutter Code wurde bereits angepasst, um den lokalen Proxy zu verwenden.

1. Starten Sie den Proxy-Server:
   ```bash
   cd proxy-server
   node server.js
   ```

2. Starten Sie die Flutter App:
   ```bash
   flutter run -d chrome
   ```

3. Die App verwendet automatisch `http://localhost:3000` wenn verfügbar.

## ⚠️ Wichtige Hinweise

- **Nur für Entwicklung!** Dieser Server ist nicht für Produktionsumgebungen geeignet.
- Der Server muss laufen, während Sie die Flutter App im Development-Modus verwenden.
- Für Produktion: Verwenden Sie die Appwrite Function (siehe [DEPLOYMENT.md](../DEPLOYMENT.md))

## 🛑 Server stoppen

Drücken Sie `Strg+C` im Terminal, wo der Server läuft.

## 🐛 Troubleshooting

### Port bereits belegt
**Problem:** `Error: listen EADDRINUSE: address already in use :::3000`

**Lösung:** 
1. Anderen Port verwenden: Ändern Sie `PORT = 3000` in `server.js`
2. Oder den bestehenden Prozess beenden:
   ```bash
   # Port finden
   lsof -i :3000
   # Prozess beenden
   kill -9 PID
   ```

### Flutter App findet Proxy nicht
**Problem:** "Failed to fetch" oder Connection Error

**Lösung:**
1. Prüfen Sie ob der Proxy läuft (`http://localhost:3000` im Browser öffnen)
2. Stellen Sie sicher, dass Port 3000 korrekt ist
3. Prüfen Sie die Browser Console für Fehler

### CORS immer noch ein Problem
**Problem:** CORS-Fehler trotz Proxy

**Lösung:**
1. Stellen Sie sicher, dass die Flutter App `localhost:3000` verwendet
2. Browser-Cache leeren
3. Entwickler-Tools → Network → "Disable cache" aktivieren
