# Clean Code OrderFlow

Ausführbares Java-21-/Spring-Boot-Lab für Clean Code, Domain Modeling,
hexagonale Grenzen, Idempotenz und das Outbox-Pattern. Der durchgängige Use Case
platziert eine Bestellung, autorisiert die Zahlung, speichert das Aggregat und
schreibt das Domain Event in eine Outbox.

## Bauen und testen

Voraussetzung ist JDK 21.

```powershell
mvn -B test
mvn -B clean verify
```

Die Anwendung verwendet standardmäßig eine flüchtige H2-Datenbank:

```powershell
mvn spring-boot:run
```

Für das vorbereitete PostgreSQL-Profil kann die lokale Datenbank mit
`docker compose up -d` gestartet werden. Eine ausführbare Request-Sammlung
liegt in [`docs/api.http`](docs/api.http).

## Kanonische Inhalte

- [`index.html`](index.html): interaktiver 16-Wochen-Lernpfad
- [`docs/learning-path.md`](docs/learning-path.md): Markdown-Quelle des Lernpfads
- [`docs/architecture.md`](docs/architecture.md): Architektur und Entscheidungen
- `src/main`: Domain, Application Ports und Spring/JPA-Adapter
- `src/test`: zwei schnelle Testklassen mit vier Domain- und
  Application-Service-Testfällen sowie Fakes
- [`compose.yml`](compose.yml): lokale PostgreSQL-Testvorbereitung
- [`.github/workflows/ci.yml`](.github/workflows/ci.yml): reproduzierbarer CI-Build

Generierte HTML-Spiegel, QA-Berichte, ZIP-Lieferpakete, Manifeste, Checksums,
Build-Ausgaben und Testreports gehören nicht zum Kanon.

Projektmetadaten stehen ausschließlich in [`project.yaml`](project.yaml). Das
Workspace-Cockpit wird daraus generiert. Zentrale KI-Konventionen, Prompts und
Skills kommen aus `nursude/ai-governance`; `AGENTS.md` enthält nur
projektspezifische Ergänzungen.
