# Anwendungen starten

Jede Anwendung eines Projekts startest du mit ap run-local im Root ihres Repositorys, lokal auf deinem Rechner genauso wie im Remote-Workspace.

> Source: https://www.application-platform.com/de/docs/workspace-ubuntu-dev-scripts/

Jedes Repository startest du mit demselben Befehl in seinem Ordner:

```bash
ap run-local
```

Die `ap`-CLI lädt die [Umgebungsdateien]({{< relref "environment-setup" >}}) aus `env/`, startet die Dienste und danach den Entwicklungsserver; lokal und im [Remote-Workspace]({{< relref "workspaces-overview" >}}) verhält sich der Befehl gleich, und der Start-Button der Plattform-Erweiterung in VS Code, Cursor und Antigravity führt ihn in einem Terminal aus.

## Backend, App und Homepage

Ein Backend braucht laufendes Docker: `ap run-local` startet über Docker Compose die Datenbank, Mailhog für abgefangene E-Mails und PHPMyAdmin, danach den Entwicklungsserver von NestJS, FastAPI oder Laravel. Eine App startet als Flutter Web oder mit dem Entwicklungsserver ihres Stacks wie Next.js oder Expo, mit den generierten und eigenen Umgebungsdateien im Build (bei Flutter über `--dart-define-from-file`); Ziel und Gerät gibst du so an:

```bash
ap run-local chrome            # Web-Build im Browser
ap run-local ios-simulator     # iOS-Simulator, nur auf macOS
ap devices list                # verfügbare Geräte anzeigen
```

Eine Homepage startet Hugo oder Astro auf dem Port des Repositorys. Die Laufzeiten kommen aus `.tool-versions`, auf macOS und Linux über `asdf`, auf Windows über FVM, NVM und HVM; `ap bootstrap` installiert sie ohne Start der Anwendung, und `ap doctor` prüft, ob alle Werkzeuge vorhanden sind.

## Ports

Jedes Repository hat feste lokale Ports von der Plattform, sodass Backend, App und Homepage parallel laufen:

```bash
ap ports
```

Der Befehl zeigt, welcher Port zu welchem Repository gehört.

## Beenden

Der Entwicklungsserver läuft im Terminal, bis du ihn mit Strg+C beendest; die Docker-Container eines Backends können weiterlaufen, du siehst und stoppst sie in Docker Desktop oder mit `docker ps`.

## Wenn etwas nicht startet

Meldet `ap doctor` ein fehlendes Werkzeug, installierst du es über das Entwickler-Setup der [Setup-App]({{< relref "local-app" >}}); im Workspace sind die Werkzeuge vorinstalliert. Bei einem belegten Port läuft meist noch eine frühere Instanz derselben Anwendung oder ein alter Container, den du beendest; `ap ports` zeigt, welcher Port gemeint ist. Scheitert ein Backend an seinen Diensten, läuft Docker meist nicht; starte Docker Desktop und wiederhole den Befehl. Eigene Variablen trägst du in `env/local.custom.env` ein und startest neu; die generierten Dateien in `env/` überschreibt die Plattform.

