# Aurora Bank — TDD-Masterclass (Lernprojekt)

[![CI](https://github.com/nursude/aurora-bank-tdd-masterclass/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/nursude/aurora-bank-tdd-masterclass/actions/workflows/ci.yml)
[![Java](https://img.shields.io/badge/Java-17-orange)](https://adoptium.net/)
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.3.4-6DB33F)](https://spring.io/projects/spring-boot)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

Multi-Modul-Maven-Projekt mit Spring Boot 3 (Jakarta-Namespace), Java 17 und PostgreSQL/Kafka:
eine fiktive Digital-Banking-Plattform (Konten, Zahlungen, Karten, Kredite, Kunden/KYC,
Benachrichtigungen), die konsequent per **Test-Driven Development** entsteht — jeder
Red-Green-Refactor-Schritt ist ein eigener Commit. Ziel: TDD nicht nur behaupten, sondern an
einem durchgängigen, laufenden Beispiel für Entwickler:innen **und** Architekt:innen erklärbar
und in der Commit-Historie nachvollziehbar machen.

Für den vollständigen Einstieg: **[documentation/docs/00-ueberblick/lernpfad.md](documentation/docs/00-ueberblick/lernpfad.md)**
oder öffne [`index.html`](index.html) im Browser. Direkt zum Kernstück:
**[documentation/docs/02-tdd/00-einfuehrung.md](documentation/docs/02-tdd/00-einfuehrung.md)**.

## Schnellstart

Voraussetzungen: Java 17, Maven und eine Docker-kompatible Container-Runtime wie Docker oder
Podman. Für `mvn clean verify` muss Testcontainers den Socket dieser Runtime erreichen können.

```bash
# 1. Infrastruktur starten (PostgreSQL, Kafka und Keycloak)
cd infra
podman compose up -d        # alternativ: docker compose up -d

# 2. Maven-Reactor bauen und testen
cd ../aurora-bank-platform
mvn clean verify
```

## Struktur

| Verzeichnis | Inhalt |
|---|---|
| `documentation/` | Das vollständige Lehrbuch: Architektur, TDD-Methodik (Entwickler- **und** Architekten-Sicht), Teststrategie, Review, DevOps, Glossar, Pattern-Katalog, Tech-Stack |
| `aurora-bank-platform/` | Maven-Reactor: alle Spring-Boot-Module (Fachservices + gemeinsame Bibliotheken + Architektur-Tests) |
| `infra/` | `docker-compose.yml` (PostgreSQL, Kafka, Keycloak; mit Docker oder Podman nutzbar) |

Der Maven-Reactor umfasst zwölf Module: fünf gemeinsame Bibliotheken, ein Modul für
Architekturtests und sechs fachliche Spring-Boot-Services. Eine genaue Zuordnung steht im
[`aurora-bank-platform/README.md`](aurora-bank-platform/README.md).

## Repository und Qualität

Der kanonische Branch ist `main`; die ursprünglichen Red-Green-Refactor-Schritte bleiben in der
Git-Historie erhalten. Reproduzierbare Prüfkommandos und der belegte Qualitätsstatus stehen in
[`project.yaml`](project.yaml). Der Struktur- und Linkvalidator wird so gestartet:

```bash
python scripts/validate_repository.py
```

## Baufortschritt

Das Projekt entsteht phasenweise, jede TDD-Einheit als eigenes Commit-Paar (`[RED]`/`[GREEN]`,
optional `refactor:`) — siehe `git log --oneline` und
[Lernpfad: Baufortschritt](documentation/docs/00-ueberblick/lernpfad.md#baufortschritt-phasen)
für den aktuellen Stand, sowie den
[TDD-Katalog](documentation/docs/02-tdd/04-tdd-katalog-pro-use-case.md) für den direkten Sprung
zur Commit-Historie eines einzelnen Use-Case.

## Lizenz / Nutzung

[MIT-Lizenz](LICENSE). Privates Lernprojekt. Kein Produktionscode, keine echten Nutzerdaten.
