# SkillMate Installation und Einrichtung

## 📋 Systemvoraussetzungen

### Minimum:
- **Node.js**: Version 18.0.0 oder höher
- **NPM**: Version 8.0.0 oder höher (wird mit Node.js installiert)
- **Speicherplatz**: Mindestens 500 MB freier Speicher
- **RAM**: Mindestens 4 GB RAM
- **Betriebssystem**: Windows 10/11, macOS 10.15+, Linux (Ubuntu 20.04+)

### Empfohlen:
- **Node.js**: Version 20.x LTS
- **RAM**: 8 GB oder mehr
- **CPU**: Dual-Core oder besser

## 🚀 Schnellstart

### Windows

1. **Laden Sie Node.js herunter und installieren Sie es:**
   - Besuchen Sie https://nodejs.org/
   - Laden Sie die LTS-Version herunter
   - Führen Sie den Installer aus

2. **Führen Sie den SkillMate Installer aus:**
   ```powershell
   # PowerShell als Administrator öffnen (nicht erforderlich, aber empfohlen)
   cd C:\Pfad\zu\SkillMate
   
   # Installer ausführen
   .\install.ps1
   ```

3. **Starten Sie SkillMate:**
   - Doppelklicken Sie auf die Desktop-Verknüpfung "SkillMate"
   - Oder führen Sie aus: `.\start-skillmate.bat`

### Linux/macOS

1. **Installieren Sie Node.js:**
   ```bash
   # Ubuntu/Debian
   curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
   sudo apt-get install -y nodejs
   
   # macOS mit Homebrew
   brew install node
   ```

2. **Führen Sie den Installer aus:**
   ```bash
   cd /pfad/zu/SkillMate
   chmod +x install.sh
   ./install.sh
   ```

3. **Starten Sie SkillMate:**
   ```bash
   ./start-skillmate.sh
   ```

## 📁 Projektstruktur nach Installation

```
SkillMate/
├── backend/
│   ├── .env                 # Backend-Konfiguration
│   ├── data/
│   │   └── skillmate.db     # SQLite Datenbank
│   ├── uploads/             # Hochgeladene Dateien
│   └── logs/                # Log-Dateien
├── frontend/
│   └── .env                 # Frontend-Konfiguration
├── admin-panel/
│   └── .env                 # Admin-Panel-Konfiguration
├── shared/                  # Gemeinsame TypeScript-Definitionen
├── start-skillmate.bat      # Windows Start-Script
├── start-skillmate.sh       # Linux/Mac Start-Script
└── start-skillmate.ps1      # PowerShell Start-Script
```

## ⚙️ Konfiguration

### Backend (.env)

Die wichtigsten Einstellungen in `backend/.env`:

```env
# Server-Port (Standard: 3001)
PORT=3001

# Umgebung (development/production)
NODE_ENV=production

# Datenbank-Pfad
DATABASE_PATH=./data/skillmate.db

# JWT Secret (automatisch generiert, NICHT TEILEN!)
JWT_SECRET=ihr-geheimer-schlüssel

# JWT Ablaufzeit
JWT_EXPIRES_IN=7d

# CORS URLs (Frontend und Admin-Panel)
CORS_ORIGIN=http://localhost:5173,http://localhost:5174

# Upload-Einstellungen
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=5242880  # 5MB in Bytes

# Sync-Einstellungen für Netzwerk
NODE_ID=eindeutige-node-id
NODE_TYPE=local  # oder "admin" für Admin-Server

# Logging
LOG_LEVEL=info  # debug, info, warn, error
LOG_DIR=./logs
```

### Frontend/Admin-Panel (.env)

```env
# Backend API URL
VITE_API_URL=http://localhost:3001/api

# App-Name und Version
VITE_APP_NAME=SkillMate
VITE_APP_VERSION=1.0.0
```

## 🔐 Erster Login

**Standard-Zugangsdaten:**
- Benutzername: `admin`
- Passwort: `admin123`

⚠️ **WICHTIG**: Ändern Sie das Passwort sofort nach dem ersten Login!

## 🌐 Netzwerk-Konfiguration

### Admin-Server einrichten

1. Setzen Sie in `backend/.env`:
   ```env
   NODE_TYPE=admin
   ```

2. Öffnen Sie das Admin-Panel
3. Navigieren Sie zu "Netzwerk & Synchronisation"
4. Fügen Sie lokale Knoten hinzu

### Lokalen Knoten einrichten

1. Setzen Sie in `backend/.env`:
   ```env
   NODE_TYPE=local
   ```

2. Verwenden Sie den API-Key vom Admin-Server

### Firewall-Einstellungen

Öffnen Sie folgende Ports falls nötig:
- **3001**: Backend API
- **5173**: Frontend (nur für Entwicklung)
- **5174**: Admin-Panel (nur für Entwicklung)

## 🛠️ Fehlerbehebung

### "Node.js ist nicht installiert"
- Installieren Sie Node.js von https://nodejs.org/
- Starten Sie Ihr Terminal/PowerShell neu

### "Port bereits belegt"
- Ein anderer Dienst nutzt bereits den Port
- Beenden Sie den Dienst oder ändern Sie den Port in der .env

### "Datenbank-Fehler"
- Löschen Sie `backend/data/skillmate.db`
- Führen Sie den Installer erneut aus

### "Build-Fehler bei SQLite"
**Linux/macOS:**
```bash
sudo apt-get install build-essential python3
# oder
brew install python
```

**Windows:**
```powershell
npm install --global windows-build-tools
```

## 📊 Datenbank-Verwaltung

### Backup erstellen
```bash
# Linux/macOS
cp backend/data/skillmate.db backend/data/skillmate_backup_$(date +%Y%m%d).db

# Windows
copy backend\data\skillmate.db backend\data\skillmate_backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%.db
```

### Datenbank zurücksetzen
1. Stoppen Sie alle SkillMate-Dienste
2. Löschen Sie `backend/data/skillmate.db`
3. Starten Sie SkillMate neu (Datenbank wird automatisch erstellt)

## 🔄 Updates

### Automatisches Update (wenn Git installiert)
```bash
git pull origin main
npm install  # im Hauptverzeichnis
cd backend && npm install && npm run build
cd ../frontend && npm install
cd ../admin-panel && npm install
```

### Manuelles Update
1. Laden Sie die neueste Version herunter
2. Sichern Sie Ihre .env Dateien und die Datenbank
3. Überschreiben Sie die Dateien
4. Führen Sie den Installer erneut aus

## 🆘 Support

Bei Problemen:
1. Überprüfen Sie die Logs in `backend/logs/`
2. Stellen Sie sicher, dass alle Abhängigkeiten installiert sind
3. Führen Sie den Installer erneut aus

## 🔒 Sicherheitshinweise

1. **Ändern Sie das Standard-Passwort** sofort nach der Installation
2. **Sichern Sie die .env Dateien** - sie enthalten sensible Daten
3. **Verwenden Sie HTTPS** in Produktionsumgebungen
4. **Beschränken Sie den Zugriff** auf die Admin-Panel URL
5. **Regelmäßige Backups** der Datenbank durchführen

## 📈 Performance-Optimierung

### Für Produktionsumgebungen:

1. **Frontend/Admin-Panel bauen:**
   ```bash
   cd frontend && npm run build
   cd ../admin-panel && npm run build
   ```

2. **Nginx als Reverse Proxy verwenden**

3. **PM2 für Prozess-Management:**
   ```bash
   npm install -g pm2
   pm2 start backend/dist/index.js --name skillmate-backend
   pm2 save
   pm2 startup
   ```

## 📝 Lizenz

SkillMate ist für den internen Gebrauch in Sicherheitsbehörden entwickelt.
Weitergabe und kommerzielle Nutzung nur mit ausdrücklicher Genehmigung.