# Technischer Rename: capakraken → capakraken — Migrationsplan

## Uebersicht

| Kategorie | Dateien | Vorkommen | Aufwand | Risiko |
|-----------|---------|-----------|---------|--------|
| **A: Package-Namen & Imports** | 277 | 548 | 3 Std | KRITISCH |
| **B: Datenbank & Docker** | 26 | 32 | 30 Min | KRITISCH |
| **C: CI/CD & Scripts** | 13 | 45 | 15 Min | HOCH |
| **D: Dokumentation** | 30 | 200+ | 1 Std | MITTEL |
| **E: Test-Daten & Emails** | 35 | 85 | 30 Min | HOCH |
| **Gesamt** | **372** | **910+** | **~5 Std** | |

---

## Phase 1: Package-Namen & Imports (KRITISCH)

### 1.1 Package-Namen umbenennen (12 package.json)

| Alt | Neu |
|-----|-----|
| `@capakraken/api` | `@capakraken/api` |
| `@capakraken/application` | `@capakraken/application` |
| `@capakraken/db` | `@capakraken/db` |
| `@capakraken/engine` | `@capakraken/engine` |
| `@capakraken/shared` | `@capakraken/shared` |
| `@capakraken/staffing` | `@capakraken/staffing` |
| `@capakraken/ui` | `@capakraken/ui` |
| `@capakraken/web` | `@capakraken/web` |
| `@capakraken/eslint-config` | `@capakraken/eslint-config` |
| `@capakraken/prettier-config` | `@capakraken/prettier-config` |
| `@capakraken/tsconfig` | `@capakraken/tsconfig` |

### 1.2 Import-Statements (277 Dateien, 548 Vorkommen)
```bash
# Globaler Find+Replace
find . -type f \( -name "*.ts" -o -name "*.tsx" \) \
  -not -path "*/node_modules/*" -not -path "*/.next/*" \
  -exec sed -i 's/@capakraken\//@capakraken\//g' {} +
```

### 1.3 tsconfig.json Path-Mappings (8 Dateien)
```
"@capakraken/*" → "@capakraken/*"
```

### 1.4 next.config.ts transpilePackages
```
"@capakraken/api" → "@capakraken/api" (6 Eintraege)
```

---

## Phase 2: Datenbank & Docker (KRITISCH)

### 2.1 Docker Compose (2 Dateien, 32 Vorkommen)

| Alt | Neu |
|-----|-----|
| `POSTGRES_DB: capakraken` | `POSTGRES_DB: capakraken` |
| `POSTGRES_USER: capakraken` | `POSTGRES_USER: capakraken` |
| `POSTGRES_PASSWORD: capakraken_dev` | `POSTGRES_PASSWORD: capakraken_dev` |
| `capakraken_pgdata` (Volume) | `capakraken_pgdata` |
| `capakraken_prod_pgdata` | `capakraken_prod_pgdata` |
| `capakraken_prod_redis` | `capakraken_prod_redis` |
| `admin@capakraken.dev` (pgAdmin) | `admin@capakraken.dev` |

### 2.2 Datenbank migrieren

```bash
# 1. Backup erstellen
docker exec capakraken-postgres-1 pg_dump -U capakraken capakraken > backup.sql

# 2. Neue DB + User erstellen
docker exec capakraken-postgres-1 psql -U postgres -c "
  CREATE USER capakraken WITH PASSWORD 'capakraken_dev';
  CREATE DATABASE capakraken OWNER capakraken;
  GRANT ALL PRIVILEGES ON DATABASE capakraken TO capakraken;
"

# 3. Daten importieren
docker exec -i capakraken-postgres-1 psql -U capakraken capakraken < backup.sql

# 4. .env.local aktualisieren
DATABASE_URL=postgresql://capakraken:capakraken_dev@localhost:5433/capakraken
```

### 2.3 Environment-Dateien (3 Dateien)
```
DATABASE_URL=postgresql://capakraken:capakraken_dev@localhost:5433/capakraken
→ DATABASE_URL=postgresql://capakraken:capakraken_dev@localhost:5433/capakraken
```

---

## Phase 3: CI/CD & Scripts (HOCH)

### 3.1 GitHub Actions (.github/workflows/ci.yml, 25 Vorkommen)
```bash
sed -i 's/@capakraken\//@capakraken\//g' .github/workflows/ci.yml
sed -i 's/capakraken_test/capakraken_test/g' .github/workflows/ci.yml
sed -i 's/POSTGRES_USER: capakraken/POSTGRES_USER: capakraken/g' .github/workflows/ci.yml
sed -i 's/pg_isready -U capakraken/pg_isready -U capakraken/g' .github/workflows/ci.yml
```

### 3.2 Root package.json Scripts (9 Vorkommen)
```bash
sed -i 's/@capakraken\//@capakraken\//g' package.json
```

### 3.3 Start/Stop/Restart Scripts
```bash
sed -i 's/capakraken/capakraken/g' scripts/start.sh scripts/stop.sh scripts/restart.sh
```

### 3.4 Dependabot
```bash
sed -i 's/capakraken/capakraken/g' .github/dependabot.yml
```

---

## Phase 4: Test-Daten & Emails (HOCH)

### 4.1 Seed-Dateien (2 Dateien)
```
admin@capakraken.dev → admin@capakraken.dev
manager@capakraken.dev → manager@capakraken.dev
viewer@capakraken.dev → viewer@capakraken.dev
```

### 4.2 E2E-Tests (11 Spec-Dateien)
```bash
find apps/web/e2e -name "*.spec.ts" \
  -exec sed -i 's/@capakraken\.dev/@capakraken.dev/g' {} +
```

### 4.3 LocalStorage-Keys
```
capakraken_theme → capakraken_theme
capakraken_sidebar_collapsed → capakraken_sidebar_collapsed
capakraken_prefs → capakraken_prefs
capakraken_dashboard_v1 → capakraken_dashboard_v1
capakraken_pwa_dismiss → capakraken_pwa_dismiss
capakraken-chat-messages → capakraken-chat-messages
```

### 4.4 Email-Defaults (3 Dateien)
```
noreply@capakraken.app → noreply@capakraken.app
```

---

## Phase 5: Dokumentation (MITTEL)

### 5.1 Kern-Dokumente
```bash
# Globaler Replace in allen .md Dateien
find . -name "*.md" -not -path "*/node_modules/*" \
  -exec sed -i 's/capakraken/capakraken/g; s/CapaKraken/CapaKraken/g; s/plANARCHY/CapaKraken/g' {} +
```

### 5.2 CLAUDE.md aktualisieren
- Projektname, Monorepo-Struktur, Package-Referenzen

### 5.3 Code-Kommentare
```bash
grep -rn "capakraken" --include="*.ts" --include="*.tsx" . \
  | grep -v node_modules | grep -v .next | grep "\/\/"
# Manuell pruefen und aendern
```

---

## Phase 6: Verzeichnis-Umbenennung (OPTIONAL)

### Nicht umbenennen (zu riskant):
- `packages/` Verzeichnisnamen bleiben (`packages/api/`, nicht `packages/capakraken-api/`)
- Git-Remote URL aendern ist ein separater Schritt beim Hoster

### Umbenennen (sicher):
- Docker-Container-Namen aendern sich automatisch durch docker-compose Aenderungen

---

## Phase 7: Verifikation

```bash
# 1. Node Modules neu installieren
rm -rf node_modules apps/web/node_modules packages/*/node_modules
pnpm install

# 2. Prisma regenerieren
pnpm db:generate

# 3. TypeScript pruefen
pnpm --filter @capakraken/web exec tsc --noEmit

# 4. Unit Tests
pnpm test:unit

# 5. Build
pnpm --filter @capakraken/web exec next build

# 6. E2E (nach Seed mit neuen Emails)
pnpm --filter @capakraken/db db:seed
pnpm test:e2e
```

---

## Risiken

| Risiko | Mitigation |
|--------|-----------|
| **pnpm Workspace-Aufloesung bricht** | Nach Rename sofort `pnpm install` ausfuehren |
| **Import-Pfade nicht komplett ersetzt** | `grep -rn "@capakraken" --include="*.ts"` als Kontrolle |
| **Docker Volumes mit alten Namen** | Alte Volumes manuell loeschen: `docker volume rm capakraken_pgdata` |
| **Bestehende User-Sessions invalide** | Alle User muessen sich neu einloggen (NEXTAUTH_SECRET bleibt gleich) |
| **LocalStorage-Keys veraltet** | Alte Keys werden ignoriert, neue Defaults greifen |
| **Git-History referenziert alten Namen** | Kein Problem — History bleibt unveraendert |

---

## Empfohlene Reihenfolge

1. **Backup erstellen** (DB + Git Tag)
2. **Phase 1** durchfuehren (Package-Namen + Imports)
3. `pnpm install` → pruefen ob Workspace funktioniert
4. **Phase 2** (Docker + DB Migration)
5. **Phase 3** (CI/CD + Scripts)
6. **Phase 4** (Tests + Emails)
7. `pnpm test:unit` → alle Tests gruen?
8. **Phase 5** (Dokumentation)
9. **Phase 7** (Vollstaendige Verifikation)
10. **Commit + PR** als einzelner "chore: rename capakraken → capakraken" Commit
