# 🚀 Deployment Checklist für QR Master

Diese Checkliste enthält alle notwendigen Änderungen vor dem Push nach Gitea und dem Production Deployment.

---

## ✅ 1. Environment Variables (.env)

### Basis URLs ändern
```bash
# Von:
NEXT_PUBLIC_APP_URL=http://localhost:3050
NEXTAUTH_URL=http://localhost:3050

# Zu:
NEXT_PUBLIC_APP_URL=https://www.qrmaster.net
NEXTAUTH_URL=https://www.qrmaster.net
```

### Secrets generieren (falls noch nicht geschehen)
```bash
# NEXTAUTH_SECRET (für JWT/Session Encryption)
openssl rand -base64 32

# IP_SALT (für DSGVO-konforme IP-Hashing)
openssl rand -base64 32
```

Bereits generiert:
- ✅ NEXTAUTH_SECRET: `PT8XVydC4v7QluCz/mV1yb7Y3docSFZeFDioJz4ZE98=`
- ✅ IP_SALT: `j/aluIpzsgn5Z6cbF4conM6ApK5cj4jDagkswzfgQPc=`

### Database URLs
```bash
# Development (localhost):
DATABASE_URL="postgresql://postgres:postgres@localhost:5435/qrmaster?schema=public"
DIRECT_URL="postgresql://postgres:postgres@localhost:5435/qrmaster?schema=public"

# Production (anpassen an deinen Server):
DATABASE_URL="postgresql://USER:PASSWORD@HOST:5432/qrmaster?schema=public"
DIRECT_URL="postgresql://USER:PASSWORD@HOST:5432/qrmaster?schema=public"
```

---

## 🔐 2. Google OAuth Configuration

### Redirect URIs in Google Cloud Console hinzufügen

1. Gehe zu: https://console.cloud.google.com/apis/credentials
2. Wähle deine OAuth 2.0 Client ID: `683784117141-ci1d928jo8f9g6i1isrveflmrinp92l4.apps.googleusercontent.com`
3. Füge folgende **Authorized redirect URIs** hinzu:

```
https://www.qrmaster.net/api/auth/callback/google
```

**Optional** (für Staging/Testing):
```
http://localhost:3050/api/auth/callback/google
https://staging.qrmaster.net/api/auth/callback/google
```

---

## 💳 3. Stripe Configuration

### ⚠️ WICHTIG: Von Test Mode zu Live Mode wechseln

#### Current (Test Mode):
```bash
STRIPE_SECRET_KEY=sk_test_51QYL7gP9xM...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_51QYL7gP9xM...
```

#### Production (Live Mode):
1. Gehe zu: https://dashboard.stripe.com/
2. Wechsle von **Test Mode** zu **Live Mode** (Toggle oben rechts)
3. Hole dir die **Live Keys**:
   - `API Keys` → `Secret key` (beginnt mit `sk_live_`)
   - `API Keys` → `Publishable key` (beginnt mit `pk_live_`)

```bash
# Production Keys:
STRIPE_SECRET_KEY=sk_live_XXXXX
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_XXXXX
```

#### Webhook Secret (Production)
1. Erstelle einen neuen Webhook Endpoint: https://dashboard.stripe.com/webhooks
2. Endpoint URL: `https://www.qrmaster.net/api/webhooks/stripe`
3. Events to listen:
   - `checkout.session.completed`
   - `customer.subscription.updated`
   - `customer.subscription.deleted`
   - `invoice.payment_succeeded`
   - `invoice.payment_failed`
4. Kopiere den **Signing Secret** (beginnt mit `whsec_`)

```bash
STRIPE_WEBHOOK_SECRET=whsec_XXXXX
```

#### Price IDs aktualisieren
Erstelle Produkte und Preise in **Live Mode**:
1. https://dashboard.stripe.com/products
2. Erstelle "Pro" und "Business" Pläne
3. Kopiere die Price IDs (beginnen mit `price_`)

```bash
STRIPE_PRICE_ID_PRO_MONTHLY=price_XXXXX
STRIPE_PRICE_ID_PRO_YEARLY=price_XXXXX
STRIPE_PRICE_ID_BUSINESS_MONTHLY=price_XXXXX
STRIPE_PRICE_ID_BUSINESS_YEARLY=price_XXXXX
```

---

## 📧 4. Resend Email Configuration

### Domain Verification
1. Gehe zu: https://resend.com/domains
2. Füge Domain hinzu: `qrmaster.net`
3. Konfiguriere DNS Records (SPF, DKIM, DMARC)
4. Warte auf Verification

### From Email anpassen
Aktuell verwendet alle Emails: `onboarding@resend.dev` (Resend's Test Domain)

Nach Domain Verification in `src/lib/email.ts` ändern:
```typescript
// Von:
from: 'Timo from QR Master <onboarding@resend.dev>',

// Zu:
from: 'Timo from QR Master <hello@qrmaster.net>',
// oder
from: 'Timo from QR Master <noreply@qrmaster.net>',
```

---

## 🔍 5. SEO Configuration

### Bereits korrekt konfiguriert ✅
```bash
NEXT_PUBLIC_INDEXABLE=true  # ✅ Bereits gesetzt
```

### Sitemap & robots.txt prüfen
- Sitemap: `https://www.qrmaster.net/sitemap.xml`
- Robots: `https://www.qrmaster.net/robots.txt`

Nach Deployment testen!

---

## 📊 6. PostHog Analytics (Optional)

Falls du PostHog nutzt:
```bash
NEXT_PUBLIC_POSTHOG_KEY=phc_XXXXX
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
```

---

## 🐳 7. Docker Deployment

### docker-compose.yml prüfen
Stelle sicher, dass alle ENV Variables korrekt gemappt sind:

```yaml
environment:
  NEXTAUTH_URL: https://www.qrmaster.net
  NEXT_PUBLIC_APP_URL: https://www.qrmaster.net
  # ... weitere vars
```

### Deployment Commands
```bash
# Build & Deploy
docker-compose up -d --build

# Database Migration (nach erstem Deploy)
docker-compose exec web npm run db:migrate

# Logs checken
docker-compose logs -f web

# Health Check
curl https://www.qrmaster.net
```

---

## 🔒 8. Security Checklist

- [ ] ✅ NEXTAUTH_SECRET ist gesetzt und sicher (32+ Zeichen)
- [ ] ✅ IP_SALT ist gesetzt und sicher
- [ ] ⚠️ Stripe ist auf **Live Mode** umgestellt
- [ ] ⚠️ Google OAuth Redirect URIs enthalten Production URL
- [ ] ⚠️ Resend Domain ist verifiziert
- [ ] ⚠️ Webhook Secrets sind für Production gesetzt
- [ ] ⚠️ Database URLs zeigen auf Production DB
- [ ] ⚠️ Keine Test/Dev Secrets in Production

---

## 📝 9. Vor dem Git Push

### Files prüfen
```bash
# .env sollte NICHT committet werden!
git status

# Falls .env in Git ist:
git rm --cached .env
echo ".env" >> .gitignore
```

### Sensible Daten entfernen
- [ ] Keine API Keys im Code
- [ ] Keine Secrets in Config Files
- [ ] `.env` ist in `.gitignore`

---

## 🎯 10. Nach dem Deployment testen

### Funktionen testen
1. **Google OAuth Login**: https://www.qrmaster.net/login
2. **QR Code erstellen**: https://www.qrmaster.net/create
3. **Stripe Checkout**: Testprodukt kaufen mit echten Stripe Test Cards
4. **Email Delivery**: Password Reset testen
5. **Analytics**: PostHog Events tracken

### Monitoring
```bash
# Server Logs
docker-compose logs -f

# Database Status
docker-compose exec db psql -U postgres -d qrmaster -c "SELECT COUNT(*) FROM \"User\";"

# Redis Status
docker-compose exec redis redis-cli PING
```

---

## 📞 Support Kontakte

- **Stripe Support**: https://support.stripe.com
- **Google Cloud Support**: https://support.google.com/cloud
- **Resend Support**: https://resend.com/docs
- **Next.js Docs**: https://nextjs.org/docs

---

## ✨ Deployment erfolgreich!

Nach erfolgreichem Deployment:
1. ✅ Teste alle wichtigen Features
2. ✅ Monitor Logs für Fehler
3. ✅ Prüfe Analytics Dashboard
4. ✅ Backup der Production Database erstellen

**Good luck! 🚀**
