# Info-Board Neu

Dieses Verzeichnis enthaelt die Planung und spaetere Umsetzung der neuen Info-Board-Plattform.

Die Trennung von `/srv/docker/infoboard-netboot` ist sinnvoll, damit:

- die bestehende produktive Netboot-Struktur unangetastet bleibt
- Planung, Prototypen und neue Deployments sauber getrennt sind
- Server-, Player- und Ansible-Artefakte nicht mit Altbestand vermischt werden

## Aktueller Stand

- Architekturplan: `PLAN.md`
- Umsetzungs-Todo: `TODO.md`
- Datenmodell: `DATENMODELL.md`
- Schema-Entwurf: `docs/SCHEMA.md`
- API- und MQTT-Vertrag: `API-MQTT-VERTRAG.md`
- Technologieentscheidungen: `TECH-STACK.md`
- Entwicklungsleitfaden: `DEVELOPMENT.md`
- Erste Dev-Testliste: `docs/TEST-CHECKLIST-DEV.md`
- Template-/Kampagnenkonzept: `docs/TEMPLATE-KONZEPT.md`
- `layout_json` fuer `message_wall`: `docs/LAYOUT-JSON.md`
- Player-Agent-Lifecycle und Health-Modell: `docs/PLAYER-AGENT-LIFECYCLE.md`
- Erster HTTP-Statuspfad fuer den Player-Agent: `docs/PLAYER-STATUS-HTTP.md`
- Provisionierungskonzept: `docs/PROVISIONIERUNGSKONZEPT.md`
- Player-Konzept: `docs/PLAYER-KONZEPT.md`
- Server-Konzept: `docs/SERVER-KONZEPT.md`
- Offene Architekturfragen: `docs/OFFENE-ARCHITEKTURFRAGEN.md`

## Projektstruktur

- `docs/` fuer weitere Architektur- und Betriebsdokumente
- `server/` fuer Backend, Frontends und Compose-Dateien
- `player/` fuer Agent, UI und lokale Startlogik
- `ansible/` fuer Rollen, Inventories und Deployments
- `compose/` fuer Container-Definitionen und Stack-Bausteine
- `scripts/` fuer Hilfsskripte

## Aktueller Implementierungsstand

### Backend (`server/backend/`)
- Vollstaendiges PostgreSQL-Backend mit Datenbank-Migrations
- Store-Layer fuer Datenverwaltung
- REST-API mit Endpunkten:
  - `message_wall` fuer Kampagnenausgabe
  - `player/status` fuer Player-Statusverwaltung
  - `/manage/` API fuer Media-Upload, Playlist-Verwaltung und Vorlagen
  - `/meta` fuer Systemmetadaten
- HTML-Statusseiten fuer Diagnose
- Admin-UI mit Medien-Upload und Playlist-Management
- Tenant-aware Architektur mit Lebenszyklusverwaltung

### Player-Agent (`player/agent/`)
- Funktionaler Go-Agent mit:
  - Selbstregistrierung beim Backend
  - Playlist-Rotation mit Heartbeat
  - Dateibasierter/env-basierter Konfiguration
  - Strukturierte Logs mit journald-Integration
  - Internes Health-Modell fuer Diagnosewerte
  - HTTP-Status-Reporter mit Lebenszyklusstatus
  - MQTT-Integration (optional) mit Authentifizierung
- Binaries fuer Linux ARM64 vorhanden

### Ansible-Automatisierung (`ansible/`)
- Zwei funktionale Rollen:
  - `signage_player`: Agent-Deployment mit Systemd-Units, Tasks, Templates und Handlers
  - `signage_display`: Display-Kiosk-Setup mit Systemd-Units, Tasks, Templates und Handlers
- Konfigurierbare Defaults und Host-Variablen
- Unterstützung für Bildschirm-Setup mit Ansible-Anleitung

### Infrastruktur (`compose/`)
- Docker Compose Setup mit:
  - PostgreSQL-Datenbank
  - Mosquitto MQTT-Broker
  - Backend-Service Integration

## Implementierte Features

- DB-Migrations und Schema-Management
- Media-Upload und Speicherverwaltung
- Playlist-Management und Rotation
- Player-Registrierung und Status-Tracking
- Admin-UI für Screensetup
- Ansible-automatisiertes Deployment auf Raspberry Pi
- Kiosk-Display-Modus
- MQTT-basierte Kommunikation
- HTML-Diagnoseseiten
