- Symfony 7.4 LTS, PHP 8.4, FrankenPHP, SQLite (3-Layer src/UI|Logic|Data) - Auth: manueller OidcClient (Authorization-Code) im UI-Layer, kein Security-Bundle/league; Session-Gate via SessionAuthSubscriber - API-Guard via statischem X-Api-Token (ApiTokenSubscriber); ExceptionSubscriber - UserEntity (Auto-Provision) + Init-Migration - Docker (php:8.4-frankenphp) + compose (essen.ljh31.de, traefik-net external) - SmokeTests (7) grün: Redirect-Fälle, API-Token, Auth-Render, Logout Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
1.1 KiB
Markdown
25 lines
1.1 KiB
Markdown
# Architecture Decision Records (ADRs)
|
||
|
||
Kurze, nicht-änderbare Aufzeichnungen der wichtigsten Entscheidungen.
|
||
Format: ADR-Mikrometer-Muster (Kontext, Entscheidung, Konsequenzen).
|
||
Nummerierung: `NNN-Name-slug.md`, fortlaufend, Lücken zulässig.
|
||
Wenn sich etwas ändert: **neue** ADR, alte als `superseded` markieren.
|
||
|
||
## Status
|
||
- `accepted` – gilt aktuell
|
||
- `proposed` – noch nicht endgültig
|
||
- `superseded` – durch neuere ADR ersetzt (→ verlinken)
|
||
- `rejected` – bewusst verworfen
|
||
|
||
## Index
|
||
|
||
| Nr | Titel | Status |
|
||
|----|-------|--------|
|
||
| [001](001-backend-symfony.md) | Backend auf Symfony 7 (PHP) | accepted |
|
||
| [002](002-frontend-htmx.md) | Frontend: serverseitig + htmx (kein React) | accepted |
|
||
| [003](003-single-user-mit-token.md) | Auth: Keycloak-OIDC (Web) + statischer API-Token (HA) | accepted |
|
||
| [004](004-ha-consumer.md) | Home-Assistant als Consumer, nicht als Host | accepted |
|
||
| [005](005-sqlite.md) | SQLite als Datenbank (vorerst) | accepted |
|
||
| [006](006-inspiration-algorithmus.md) | Inspiration-Algorithmus: gewichteter Mix | proposed |
|
||
| [007](007-architekturrichtlinien.md) | Architekturrichtlinien (3 Layer, UI/Logic/Data) | accepted |
|