# MYP Reservation Platform

Mercedes-Benz Werk 040 Berlin - 3D-Drucker Reservierungsplattform

## 🚀 Schnellstart

### MYP Control Center (Empfohlen)

Das zentrale Installationssystem für alle Komponenten:

```bash
# Repository klonen
git clone <repository-url>
cd Projektarbeit-MYP

# MYP Control Center starten
./myp_installer.sh
```

Das MYP Control Center bietet:
- **Schnellstart-Installationen** (Vollständig, Backend-Only, Entwicklung)
- **Produktions-Installer** (Integration der v3.2 install.sh Funktionalität)
- **Granulare Installation** (Einzelne Komponenten)
- **System & Wartung** (Tests, Status, Informationen)

### Direkter Produktions-Installer

Für schnelle Produktions-Deployments direkt im MYP Control Center → Option 4:

```bash
./myp_installer.sh
# → Wähle Option 4: Produktions-Installer
# → Backend installieren (Raspberry Pi)
# → Frontend installieren (Docker)
```

### Voraussetzungen

- **Backend (Raspberry Pi)**: Python 3.11, systemd
- **Frontend (m040tbaraspi001)**: Docker, Docker Compose

## 🌐 Zugriff

- **Frontend**: https://m040tbaraspi001.de040.corpintra.net
- **Backend API**: https://raspberrypi/api

## 🔧 Konfiguration

### Netzwerk

| Komponente | Hostname | IP | Port |
|------------|----------|----|----- |
| Frontend | m040tbaraspi001.de040.corpintra.net | 192.168.0.109 | 443 |
| Backend | raspberrypi | 192.168.0.105 | 443 |

### TLS-Zertifikate

Selbstsignierte Zertifikate werden automatisch generiert:
- Backend: `backend/app/certs/`
- Frontend: `frontend/certs/`

## 📊 Health Checks

```bash
# Backend
curl -k https://raspberrypi/api/test

# Frontend
curl -k https://m040tbaraspi001.de040.corpintra.net/health
```

## 🛠️ Entwicklung

### MYP Control Center (Entwicklungs-Setup)
```bash
./myp_installer.sh
# → Option 3: Entwicklungs-Setup
```

### MYP Kiosk-Modus (Produktions-bereit)

Das Backend bietet parallel zur API auch ein **vollständiges Web-Interface** für Kiosk-Betrieb:

```bash
./myp_installer.sh
# → Option 2: Backend-Only Installation (mit Kiosk Web Interface)
# oder
# → Option 5: Granulare Installation → Kiosk-Modus installieren
```

**Kiosk-Features:**
- ✅ **Web-Interface parallel zur API** - Kein separates Frontend nötig
- ✅ **Touch-optimierte Bedienung** - Ideal für Raspberry Pi Touchscreens  
- ✅ **Automatischer Browser-Start** - Vollbild-Modus beim Boot
- ✅ **systemd Integration** - Service-basierte Kiosk-Verwaltung
- ✅ **Produktions-bereit** - SSL, Logging, Monitoring

**Kiosk URLs:**
- Hauptinterface: `https://raspberrypi/`
- Dashboard: `https://raspberrypi/dashboard`
- Drucker-Verwaltung: `https://raspberrypi/printers`
- Job-Verwaltung: `https://raspberrypi/jobs`
- Admin-Panel: `https://raspberrypi/admin`

### Manuelle Installation

#### Backend Debug-Modus
```bash
cd backend/app
python3.11 app.py --debug
```

#### Frontend Development
```bash
cd frontend
npm run dev
```

#### Kiosk-Modus manuell starten
```bash
# Backend starten
cd backend/app && python app.py

# Kiosk-Browser starten (separates Terminal)
./backend/app/start_kiosk.sh
```

## 📁 Projektstruktur

```
Projektarbeit-MYP/
├── myp_installer.sh          # 🎯 HAUPT-INSTALLER (Control Center)
├── backend/
│   ├── app/
│   │   ├── certs/             # TLS-Zertifikate
│   │   ├── database/          # SQLite-Datenbank
│   │   ├── logs/              # Anwendungslogs
│   │   └── app.py             # Hauptanwendung
│   ├── myp.service            # systemd Service
│   ├── requirements.txt       # Python-Abhängigkeiten
│   └── legacy_setup_raspberry_pi.sh  # Legacy Skript
├── frontend/
│   ├── certs/                 # TLS-Zertifikate
│   ├── docker/
│   │   ├── caddy/
│   │   │   └── Caddyfile      # Reverse Proxy Konfiguration
│   │   └── legacy_deploy.sh   # Legacy Skript
│   ├── src/                   # Next.js Anwendung
│   └── docker-compose.yml
├── scripts/
│   └── legacy_generate_certs.sh  # Legacy Skript
├── archiv/
│   └── myp_installer_legacy.sh   # Archivierte Version
└── docs/                      # Dokumentation
```

### Script-Status

| Skript | Status | Verwendung |
|--------|--------|------------|
| `myp_installer.sh` | ✅ **AKTIV** | Haupt-Control-Center |
| `*legacy_*.sh` | 📦 Legacy | Historische Versionen |
| `archiv/myp_installer_legacy.sh` | 📦 Archiv | Alte Version 4.0 |

## 🔒 Sicherheit

- HTTPS-only (Port 443)
- Selbstsignierte TLS-Zertifikate
- HTTP → HTTPS Redirect
- Security Headers (HSTS, CSP, etc.)

## 📝 Logs

### Backend
```bash
# systemd Journal
sudo journalctl -u myp.service -f

# Anwendungslogs
tail -f backend/app/logs/app/app.log
```

### Frontend
```bash
# Docker Logs
docker-compose logs -f

# Caddy Logs
docker-compose logs caddy
```

### Kiosk-Modus
```bash
# Backend Service
sudo systemctl status myp.service

# Kiosk-Browser Service  
sudo systemctl status myp-kiosk-browser.service

# Kiosk-Browser Logs
sudo journalctl -u myp-kiosk-browser.service -f
```

## 🔧 Services

### Backend Services
```bash
# Backend starten/stoppen
sudo systemctl start myp.service
sudo systemctl stop myp.service
sudo systemctl restart myp.service

# Kiosk-Browser starten/stoppen (falls installiert)
sudo systemctl start myp-kiosk-browser.service
sudo systemctl stop myp-kiosk-browser.service

# Automatischen Start aktivieren/deaktivieren
sudo systemctl enable myp.service
sudo systemctl enable myp-kiosk-browser.service
```

## 🆘 Troubleshooting

### MYP Control Center verwenden
```bash
./myp_installer.sh
# → Option 6: Systemvoraussetzungen prüfen
# → Option 7: Anwendung starten
```

### Backend startet nicht
```bash
# Service Status prüfen
sudo systemctl status myp.service

# Logs prüfen
sudo journalctl -u myp.service --no-pager

# Zertifikate prüfen
ls -la backend/app/certs/
```

### Frontend nicht erreichbar
```bash
# Container Status prüfen
docker-compose ps

# Netzwerk prüfen
docker network ls

# Zertifikate prüfen
ls -la frontend/certs/
```

### Verbindungsprobleme
```bash
# DNS auflösen
nslookup raspberrypi
nslookup m040tbaraspi001.de040.corpintra.net

# Ports prüfen
netstat -tlnp | grep :443
```

## 📋 Version

- **Version**: 3.2-final
- **Control Center**: v4.0 mit v3.2 Integration
- **Build**: Production
- **Installer**: MYP Control Center

## 👥 Support

Bei Problemen verwenden Sie das MYP Control Center oder wenden Sie sich an das IT-Team des Mercedes-Benz Werk 040 Berlin.

## 🖥️ Zwei-Server-Setup (Produktions-Architektur)

Das MYP-System ist für eine **Zwei-Server-Architektur** optimiert:

### Server-Architektur

| Server | Hostname | Komponenten | URL |
|--------|----------|-------------|-----|
| **Frontend-Server** | `m040tbaraspi001.de040.corpintra.net` | Next.js + Docker + Caddy | `https://m040tbaraspi001.de040.corpintra.net` |
| **Backend-Server** | `raspberrypi` | Flask API + Web Interface + Kiosk | `https://raspberrypi` |

### 🚀 Server-spezifische Installation (Empfohlen)

Der `myp_installer.sh` erkennt automatisch den Server-Typ und bietet passende Installationsoptionen:

```bash
./myp_installer.sh
# Wählen Sie: "1. Server-spezifische Installation (Empfohlen)"
```

#### Frontend-Server (m040tbaraspi001)
```bash
# Automatische Erkennung: m040tbaraspi001.de040.corpintra.net
# Verfügbare Optionen:
# 1. Frontend installieren (Next.js + Docker)
# 2. Frontend Produktions-Deployment (Port 443 mit SSL)
# 3. Nur Docker & Dependencies installieren
```

#### Backend-Server (Raspberry Pi)
```bash
# Automatische Erkennung: raspberrypi
# Verfügbare Optionen:
# 1. Backend installieren (Flask API + Web Interface)
# 2. Kiosk-Modus installieren (Touch-Interface)
# 3. Produktions-Setup (Backend + Kiosk + Services)
# 4. Nur Python & Dependencies installieren
```

### 🔧 Manuelle Installation

#### Frontend-Server Setup
```bash
# Auf m040tbaraspi001.de040.corpintra.net
cd frontend/
npm install
docker-compose up -d
```

#### Backend-Server Setup
```bash
# Auf raspberrypi
cd backend/app/
python3.11 -m pip install -r requirements.txt
sudo systemctl start myp.service
sudo systemctl start myp-kiosk-browser.service  # Optional: Kiosk-Modus
```

### 🌐 URLs & Zugriff

#### Frontend (m040tbaraspi001)
- **Haupt-URL**: `https://m040tbaraspi001.de040.corpintra.net`
- **Entwicklung**: `http://localhost:3000` (npm run dev)
- **Produktion**: `https://localhost:443` (Docker)

#### Backend (Raspberry Pi)
- **API**: `https://raspberrypi/api`
- **Web Interface**: `https://raspberrypi`
- **Kiosk-Modus**: `https://raspberrypi` (Vollbild-Touch-Interface)

### 🔗 Server-Kommunikation

Die Server kommunizieren über HTTPS:
- **Frontend → Backend**: `https://raspberrypi/api`
- **OAuth Callbacks**: `https://m040tbaraspi001.de040.corpintra.net/auth/login/callback`
- **Cross-Origin**: Automatisch konfiguriert für beide Domains

### 🛠️ Konfiguration

#### Frontend (.env.local)
```bash
# Backend-Verbindung
NEXT_PUBLIC_API_URL=https://raspberrypi
NEXT_PUBLIC_BACKEND_HOST=raspberrypi

# Frontend-URLs
NEXT_PUBLIC_FRONTEND_URL=https://m040tbaraspi001.de040.corpintra.net
NEXTAUTH_URL=https://m040tbaraspi001.de040.corpintra.net
```

#### Backend (config/settings.py)
```python
# Frontend-Verbindung
FRONTEND_URL = "https://m040tbaraspi001.de040.corpintra.net"
CORS_ORIGINS = ["https://m040tbaraspi001.de040.corpintra.net"]

# Kiosk-Konfiguration
KIOSK_MODE = True
KIOSK_AUTO_LOGIN = True
```

