# Development Scripts

Diese Dokumentation beschreibt die verfügbaren Entwicklungsbefehle im Manacore Monorepo.

## Übersicht

Das Monorepo nutzt [Turborepo](https://turbo.build/) für parallele Builds und intelligentes Caching. Alle Befehle werden über `pnpm` ausgeführt.

## Globale Befehle

| Befehl              | Beschreibung                                      |
| ------------------- | ------------------------------------------------- |
| `pnpm dev`          | Startet alle Apps (Web, Mobile, Landing, Backend) |
| `pnpm build`        | Baut alle Packages und Apps                       |
| `pnpm test`         | Führt alle Tests aus                              |
| `pnpm lint`         | Führt Linting für alle Packages aus               |
| `pnpm type-check`   | TypeScript-Typprüfung für alle Packages           |
| `pnpm clean`        | Bereinigt Build-Artefakte                         |
| `pnpm format`       | Formatiert alle Dateien mit Prettier              |
| `pnpm format:check` | Prüft Formatierung ohne Änderungen                |

## App-Typ Befehle

Diese Befehle starten alle Apps eines bestimmten Typs gleichzeitig:

| Befehl             | Beschreibung               | Apps                                       |
| ------------------ | -------------------------- | ------------------------------------------ |
| `pnpm dev:web`     | Startet alle Web-Apps      | maerchenzauber, manacore, manadeck, memoro |
| `pnpm dev:landing` | Startet alle Landing Pages | maerchenzauber, manacore, manadeck, memoro |
| `pnpm dev:mobile`  | Startet alle Mobile-Apps   | maerchenzauber, manacore, manadeck, memoro |

### Beispiel

```bash
# Alle Web-Apps starten (SvelteKit)
pnpm dev:web

# Alle Landing Pages starten (Astro)
pnpm dev:landing

# Alle Mobile-Apps starten (Expo)
pnpm dev:mobile
```

## Projekt-spezifische Befehle

Diese Befehle starten ein komplettes Projekt mit allen zugehörigen Apps und Dependencies:

| Befehl                    | Beschreibung                                           |
| ------------------------- | ------------------------------------------------------ |
| `pnpm maerchenzauber:dev` | Startet Maerchenzauber (Backend, Web, Mobile, Landing) |
| `pnpm manacore:dev`       | Startet Manacore (Web, Mobile, Landing)                |
| `pnpm manadeck:dev`       | Startet Manadeck (Web, Mobile, Landing)                |
| `pnpm memoro:dev`         | Startet Memoro (Web, Mobile, Landing)                  |

## Turbo Filter

Für erweiterte Kontrolle kannst du Turbo-Filter direkt verwenden:

```bash
# Einzelne App starten
pnpm turbo run dev --filter=@storyteller/web

# Mehrere Apps kombinieren
pnpm turbo run dev --filter=manacore-web --filter=memoro-web
```

### Package-Namen Referenz

Da die Package-Namen im Monorepo unterschiedlich sind, hier eine Übersicht:

| Projekt        | Web                | Landing                | Mobile                | Backend                |
| -------------- | ------------------ | ---------------------- | --------------------- | ---------------------- |
| maerchenzauber | `@storyteller/web` | `@storyteller/landing` | `@storyteller/mobile` | `@storyteller/backend` |
| manacore       | `manacore-web`     | `manacore-landing`     | `manacore`            | -                      |
| manadeck       | `web`              | `landing`              | `manadeck`            | -                      |
| memoro         | `memoro-web`       | `memoro-landing`       | `memoro`              | -                      |

### Filter-Syntax

| Pattern               | Beschreibung                   |
| --------------------- | ------------------------------ |
| `--filter=name`       | Exakte Package-Übereinstimmung |
| `--filter=name...`    | Package und alle Dependencies  |
| `--filter='@scope/*'` | Alle Packages im Scope         |

## Port-Zuweisungen

Wenn mehrere Apps gleichzeitig laufen, verwenden sie unterschiedliche Ports:

| App-Typ | Projekt        | Standard-Port |
| ------- | -------------- | ------------- |
| Web     | maerchenzauber | 5173          |
| Web     | manacore       | 5174          |
| Web     | manadeck       | 5175          |
| Web     | memoro         | 5176          |
| Landing | maerchenzauber | 4321          |
| Landing | manacore       | 4322          |
| Landing | manadeck       | 4323          |
| Landing | memoro         | 4324          |
| Backend | maerchenzauber | 3000          |

_Hinweis: Die tatsächlichen Ports können je nach Konfiguration variieren._

## Tipps

1. **Schnelleres Starten**: Nutze `dev:web` statt `dev` wenn du nur an Web-Apps arbeitest
2. **Parallele Entwicklung**: Turbo führt alle Tasks parallel aus und nutzt Caching
3. **Selektives Bauen**: Nutze Filter um nur relevante Packages zu bauen
