# Library Platform — Enterprise-Bibliotheksverwaltung (Lernprojekt)

Multi-Module-Maven-Projekt mit Spring Boot 3 (Jakarta-Namespace), Spring Cloud, Kafka,
RabbitMQ, Keycloak, PostgreSQL, Angular und Kubernetes/Helm — gebaut, um Enterprise-Architektur,
Entwurfsmuster und Technologien an einem durchgängigen, laufenden Beispiel zu erklären.

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.

## Schnellstart

Voraussetzungen: Java 21, Maven, Podman (unter Windows/macOS mit `podman machine`; siehe
Lernpfad für die vollständige Liste). `podman compose` liest die unveränderte
`docker-compose.yml`.

```bash
# 1. Infrastruktur starten (Postgres, Kafka, RabbitMQ, Keycloak, Redis, Observability)
cd infra
podman compose up -d

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

## Struktur

| Verzeichnis | Inhalt |
|---|---|
| `documentation/` | Das vollständige Lehrbuch (Architekt/Entwickler/Tester/Reviewer/DevOps-Sicht, Glossar, Pattern-Katalog, Tech-Stack-Katalog) |
| `library-platform/` | Maven-Reactor: alle Spring-Boot-Module (Fachservices + gemeinsame Bibliotheken + Infrastruktur-Services) |
| `library-frontend/` | Angular-SPA (ab Umsetzungsphase 6) |
| `infra/` | `docker-compose.yml`, Keycloak-Realm-Export, Helm-Chart (ab Phase 7), Prometheus/Grafana-Provisionierung |

## Baufortschritt

Das Projekt entsteht phasenweise, jeweils mit eigenem Git-Commit — siehe `git log` und
[Lernpfad: Umsetzungsphasen](documentation/docs/00-ueberblick/lernpfad.md#umsetzungsphasen-baufortschritt)
für den aktuellen Stand.

Die früher getrennten Entwicklungszweige sind im kanonischen Branch `main` historientreu
zusammengeführt. Der frühere Bitbucket-Verlauf bleibt als eigener Archiv-Branch erhalten und wird
nicht als parallele Projektkopie weitergeführt.

## Repository und Qualität

Dieses Projekt liegt kanonisch unter `labs/library-management-platform` und wird als privates
GitHub-Repository `nursude/library-management-platform` auf `main` geführt. Die filterbaren,
langfristigen Metadaten stehen in [`project.yaml`](project.yaml). Flüchtige Angaben wie letzte
Änderung, Alter, Umfang und betroffene Bereiche werden daraus und aus Git im zentralen
Workspace-Cockpit berechnet.

Die reproduzierbare Testvorbereitung bleibt Bestandteil des Repositorys: Java-Tests,
Testcontainers, versionierte Pact-Verträge, Angular/Karma, Playwright, Datenbankmigrationen,
Compose, Helm sowie CI- und Jenkins-Konfiguration. Der lokale Struktur- und Hygienecheck läuft mit:

```bash
python scripts/validate_repository.py
powershell -NoProfile -File scripts/clean_generated.ps1  # ignorierte Build-/Cache-Ausgaben entfernen
```

Aktuell geprüfte Build-, Test- und Sicherheitsstände werden ausschließlich im `quality`-Block von
`project.yaml` gepflegt; generierte Testberichte und lokale Build-Ausgaben werden nicht committet.

## KI-Unterstützung und zentrale Konventionen

Projektbezogene Hinweise stehen in [`AGENTS.md`](AGENTS.md), der lokale Review-Einstieg unter
[`ai/prompts/repository-review.md`](ai/prompts/repository-review.md). Gemeinsame Prompts, Skills und
Konventionen stammen zentral aus dem privaten Repository `nursude/ai-governance`; der konkret
übernommene Stand ist in [`ai/governance.lock`](ai/governance.lock) festgehalten. So bleibt die
zentrale Regelbasis nachvollziehbar, während Bibliotheks-spezifische Architektur- und
Testkonventionen direkt beim Projekt liegen.

## Lizenz / Nutzung

Privates Lernprojekt. Kein Produktionscode, keine echten Nutzerdaten.
