# 🗄️ GoLap Backend Setup

## 📋 Voraussetzungen

### 1. XAMPP Installation
- Lade XAMPP von [https://www.apachefriends.org](https://www.apachefriends.org)
- Installiere XAMPP mit MySQL und Apache
- Starte Apache und MySQL aus dem XAMPP Control Panel

### 2. Node.js Installation
- Lade Node.js von [https://nodejs.org](https://nodejs.org)
- Installiere Node.js 18.x oder neuer

## 🚀 Backend Setup

### 1. Datenbank einrichten
```bash
# Öffne phpMyAdmin (http://localhost/phpmyadmin)
# Erstelle neue Datenbank mit Namen: "GoLap"
# Importiere die SQL-Datei:
mysql -u root -p GoLap < backend/database.sql
```

### 2. Backend installieren
```bash
# Navigiere zum Backend-Ordner
cd backend

# Installiere Abhängigkeiten
npm install

# Starte den Server
npm start
```

### 3. Server testen
Der Backend-Server läuft auf: `http://localhost:3001`

Test-Endpunkte:
- `GET http://localhost:3001/api/questions/betriebstechnik`
- `GET http://localhost:3001/api/questions/applikationsentwicklung`
- `POST http://localhost:3001/api/auth/login`

## 🔧 Konfiguration

### IP-Adresse anpassen
Wenn du von einem anderen Gerät aus zugreifen möchtest:

1. **Backend ändern** (`backend/api.js`):
```javascript
const dbConfig = {
  host: '0.0.0.0', // Erlaube Verbindungen von allen IPs
  port: 3306,
  user: 'root',
  password: '',
  database: 'GoLap',
  charset: 'utf8mb4'
};
```

2. **Frontend anpassen** (`src/utils/api.ts`):
```typescript
const API_BASE_URL = 'http://DEINE_IP:3001/api';
```

### Test-User
Die Datenbank enthält einen Test-User:
- **Email**: `admin@golap.app`
- **Username**: `admin`
- **Passwort**: `admin123`

## 📊 Datenbankstruktur

### Haupttabellen:
- **users**: Benutzerdaten
- **user_statistics**: Statistiken pro User/Beruf
- **questions**: Quiz-Fragen
- **categories**: Frage-Kategorien
- **quiz_sessions**: Quiz-Sitzungen

### Jeder User hat:
- Eigene Statistiken für jeden Beruf
- Detaillierte Quiz-Historie
- Persönliche Einstellungen

## 🌐 Multi-Device Support

### Wie es funktioniert:
1. **Authentifizierung**: User login mit JWT-Token
2. **Datenbank**: Alle Daten in zentraler MySQL-Datenbank
3. **API**: RESTful API für alle Operationen
4. **Geräte-unabhängig**: Jedes Gerät kann auf die gleichen Daten zugreifen

### Beispiel:
- User A macht 10 Fragen auf iPhone → In Datenbank gespeichert
- User A loggt sich auf Android ein → Sieht die 10 Fragen
- User B macht 25 Fragen auf Tablet → Andere Daten, getrennt gespeichert

## 🔍 Fehlerbehebung

### Backend startet nicht:
```bash
# Überprüfe ob MySQL läuft
sudo systemctl status mysql

# Überprüfe ob Port 3001 frei ist
netstat -tlnp | grep :3001
```

### Datenbank-Verbindung fehlschlägt:
- Überprüfe MySQL-Login: `mysql -u root -p`
- Überprüfe Datenbank: `SHOW DATABASES;`
- Überprüfe Tabellen: `USE GoLap; SHOW TABLES;`

### API nicht erreichbar:
- Überprüfe ob Backend läuft: `curl http://localhost:3001/api`
- Überprüfe Firewall-Einstellungen
- Überprüfe IP-Konfiguration

## 🚀 Produktiv-Deployment

Für den Live-Betrieb:
1. **Datenbank**: MySQL/MariaDB Server
2. **Backend**: Node.js mit PM2
3. **Frontend**: React Native App
4. **SSL**: HTTPS-Zertifikat
5. **Backup**: Regelmäßige Datenbank-Backups

---

**🎉 Das Backend ist jetzt bereit für echte Multi-Device User-Daten!**
