diff --git a/apps/ui/static/README.md b/apps/ui/static/README.md
new file mode 100644
index 0000000..333da95
--- /dev/null
+++ b/apps/ui/static/README.md
@@ -0,0 +1,301 @@
+# Home Automation API Client
+
+Wiederverwendbare JavaScript-API-Client-Bibliothek für das Home Automation UI.
+
+## Installation
+
+Füge die folgenden Script-Tags in deine HTML-Seiten ein:
+
+```html
+
+
+```
+
+## Konfiguration
+
+Der API-Client nutzt `window.API_BASE`, das vom Backend gesetzt wird:
+
+```javascript
+window.API_BASE = '{{ api_base }}'; // Jinja2 template
+```
+
+## Verwendung
+
+### Globale Instanz
+
+Der API-Client erstellt automatisch eine globale Instanz `window.apiClient`:
+
+```javascript
+// Layout abrufen
+const layout = await window.apiClient.getLayout();
+
+// Geräte abrufen
+const devices = await window.apiClient.getDevices();
+
+// Gerätestatus abrufen
+const state = await window.apiClient.getDeviceState('kitchen_light');
+
+// Gerätesteuerung
+await window.apiClient.setDeviceState('kitchen_light', 'light', {
+ power: true,
+ brightness: 80
+});
+```
+
+### Verfügbare Methoden
+
+#### `getLayout(): Promise`
+Lädt die Layout-Daten (Räume und ihre Geräte).
+
+```javascript
+const layout = await window.apiClient.getLayout();
+// { rooms: [{name: "Küche", devices: ["kitchen_light", ...]}, ...] }
+```
+
+#### `getDevices(): Promise`
+Lädt alle Geräte mit ihren Features.
+
+```javascript
+const devices = await window.apiClient.getDevices();
+// [{device_id: "...", name: "...", type: "light", features: {...}}, ...]
+```
+
+#### `getDeviceState(deviceId): Promise`
+Lädt den aktuellen Status eines Geräts.
+
+```javascript
+const state = await window.apiClient.getDeviceState('kitchen_light');
+// {power: true, brightness: 80, ...}
+```
+
+#### `getAllStates(): Promise