# Architektur

AURA trennt die Beschreibung der Oberfläche von den Diensten der Anwendung. Der Szenengraph und die Laufzeit bleiben in C++.

## Ein Format, zwei Wege

`aurac` übersetzt `.aura` beim Build in C++. Der dynamische Loader baut dieselben Dateien zur Laufzeit auf. Die App arbeitet in beiden Fällen mit demselben typisierten Interface. Gemeinsame Schemas und Regeln halten beide Pfade zusammen.

## Die Schichten

| Modul | Aufgabe |
|---|---|
| aura-lang / aurac | Sprache, Parser, Schema und C++-Generator |
| aura-ui | Szenengraph, Layout, Text, Eingabe, Animationen und Medien |
| aura-core | Bindungen, Tasks, Timer, Prozesse, Datenformate und Geräte |
| aura-net | HTTP(S), Server, Sitzungen, TLS und Kryptografie |
| aura-script | JavaScript und Lua mit gemeinsamer C++-API und Limits |
| aura-remote | Screenshots, Ereignisse und Szene über HTTP |
| aura-preview | Vorschau, Headless-Rendering und Editor-Protokoll |
| aura-webview | Optionales Chromium/CEF im Szenengraph |

## Der Anwendungskontext

Die UI erhält Bilder, Übersetzungen, Theme-Werte und weitere Anwendungsdaten über `aura::ui::Context`. Ein eigener Kontext verbindet das Framework mit deiner Anwendung. AURA selbst kennt keine kiosk-spezifischen Bestell- oder Produktdaten.

## Threads und Lebensdauer

Der Szenengraph gehört auf den UI-Thread. Hintergrundaufgaben liefern ihre Ergebnisse über `aura::post()` oder `TaskRunner`; beobachtbare Werte halten Bindungen aktuell. Die [App-Dokumentation](application.md) und [Lebensdauer-Regeln](state-bindings.md) beschreiben die Details.

## Rendering

Skia zeichnet 2D-Grafik und Text. SDL3 übernimmt Fenster, Eingabe und GL-Kontext. Headless-PNGs ermöglichen visuelle Tests ohne Fenster. Die [Grafik-Dokumentation](graphics.md) beschreibt Rendering, Layout und Hintergrundarbeit.

## Buildoptionen

UI, Netzwerk, Skripte und WebView lassen sich separat konfigurieren. WebView benötigt CEF und ist standardmäßig deaktiviert. Siehe [Build und Werkzeuge](build-tools.md) und [WebView](webview.md).
