neue Readme

This commit is contained in:
Erik Thiele
2026-04-17 14:13:53 +02:00
parent 97f047497a
commit 6faf207246

221
README.md
View File

@@ -1,122 +1,185 @@
📺 CANCOM Simple Signage # 📺 CANCOM Simple Signage
CANCOM Simple Signage ist ein leichtgewichtiges, browserbasiertes DigitalSignageSystem auf Basis von Python + Flask.
Ziel ist eine einfache, robuste und wartbare Lösung für interne InfoScreens, ohne die Komplexität klassischer DigitalSignagePlattformen.
✨ Features **CANCOM Simple Signage** ist ein leichtgewichtiges, browserbasiertes Digital-Signage-System auf Basis von **Python + Flask**.
✅ Browserbasierter Player (kein nativer Client erforderlich) Ziel ist eine **einfache, robuste und wartbare Lösung** für interne Info-Screens, ohne die Komplexität klassischer Digital-Signage-Plattformen.
✅ Bilder & Videos (MP4, H.264)
✅ Pro Screen eine eigene Playlist
✅ Drag&DropReihenfolge im AdminPortal
✅ Automatischer PlayerReload bei Änderungen
✅ Upload & Löschen von Medien
✅ ScreenStatus (aktiv / leer)
✅ CIkonformes AdminUI (CANCOM)
✅ Läuft lokal, in VMs oder auf Proxmox
---
🧱 Architektur ## ✨ Features
CSSBrowser (Player) │ ▼Flask App (Server)├── Admin UI├── Player UI├── config.json└── media/ └── <screen-name>/ ├── bild.jpg └── video.mp4Weitere Zeilen anzeigen
Server: Python 3 + Flask - ✅ Browser-basierter Player (kein nativer Client erforderlich)
Player: Jeder moderne Browser (Chrome, Edge, Firefox, KioskMode) - ✅ Bilder & Videos (MP4, H.264)
State: config.json + Dateisystem - ✅ Pro Screen eine eigene Playlist
Frontend: Tabler + SortableJS (CDN) - ✅ Drag-&-Drop-Reihenfolge im Admin-Portal
- ✅ Automatischer Player-Reload bei Änderungen
- ✅ Upload & Löschen von Medien
- ✅ Screen-Status (aktiv / leer)
- ✅ CI-konformes Admin-UI (CANCOM)
- ✅ Läuft lokal, in VMs oder auf Proxmox
---
📂 Projektstruktur ## 🧱 Architektur
CSSsignage/├── app.py # Flask Application├── config.json # Konfiguration (Screens, Playlists, Intervalle)├── media/ # Medien pro Screen│ ├── lobby/│ └── meetingroom/├── templates/│ ├── admin.html # Admin UI│ ├── player.html # Player UI│ └── login.html # Login Page├── static/ # (optional) eigene Assets└── README.md``Weitere Zeilen anzeigen
🚀 Installation ```
Voraussetzungen Browser (Player)
Flask App (Server)
├── Admin UI
├── Player UI
├── config.json
└── media/
└── <screen-name>/
├── bild.jpg
└── video.mp4
```
Python ≥ 3.9 - **Server:** Python 3 + Flask
pip - **Player:** Jeder moderne Browser (Chrome, Edge, Firefox, Kiosk-Modus)
ffmpeg (für VideoKonvertierung empfehlenswert) - **State:** `config.json` + Dateisystem
- **Frontend:** Tabler + SortableJS (CDN)
CSSsudo apt install python3 python3-pip ffmpegWeitere Zeilen anzeigen ---
Setup ## 📂 Projektstruktur
Shellgit clone <repository-url>cd signagepip install flask flask-login werkzeugWeitere Zeilen anzeigen
Starten ```
Shellpython app.pyWeitere Zeilen anzeigen signage/
Server läuft standardmäßig auf: ├── app.py
├── config.json
├── media/
│ ├── lobby/
│ └── meetingroom/
├── templates/
│ ├── admin.html
│ ├── player.html
│ └── login.html
├── static/
└── README.md
```
---
## 🚀 Installation
### Voraussetzungen
- Python ≥ 3.9
- pip
- ffmpeg
```bash
sudo apt install python3 python3-pip ffmpeg
```
### Setup
```bash
git clone <repository-url>
cd signage
pip install flask flask-login werkzeug
```
### Starten
```bash
python app.py
```
Server läuft auf:
```
http://localhost:5000 http://localhost:5000
```
---
🛠️ Betrieb ## 🛠️ Betrieb
AdminPortal
### Admin-Portal
```
/admin /admin
```
Funktionen: - Screens konfigurieren
- Medien hochladen / löschen
- Playlist per Drag & Drop sortieren
Screens konfigurieren ### Player-URLs
Medien hochladen / löschen
Playlist per Drag & Drop sortieren
```
PlayerURLs
/player/<screen-name> /player/<screen-name>
```
Beispiel: Beispiel:
```
http://server:5000/player/lobby http://server:5000/player/lobby
```
Empfehlung: ---
Browser im KioskModus ## 🔄 Automatischer Reload
Autostart beim Login
Der Player aktualisiert sich selbst, wenn:
🔄 Automatischer Reload - Medien hinzugefügt oder gelöscht werden
Der Player prüft regelmäßig, ob sich die Playlist geändert hat: - Playlist-Reihenfolge geändert wird
- Screen-Einstellungen angepasst werden
Datei hinzugefügt ---
Datei gelöscht
Reihenfolge geändert
Einstellungen geändert
➡️ Bei Änderung lädt sich der Player automatisch neu. ## ⚠️ Git & Medien
⚠️ Wichtig: Git & Medien > **Dieses Repository ist für Code gedacht, nicht für Medien.**
👉 Dieses Repository ist für Code gedacht, nicht für Inhalte.
Empfohlene Praxis:
Plain Textmedia/*.mp4*.jpg*.pngWeitere Zeilen anzeigen
in .gitignore aufnehmen.
Medien werden:
per AdminUpload Empfohlene `.gitignore`:
oder via Samba / Fileshare
bereitgestellt.
```gitignore
media/
*.mp4
*.mov
*.jpg
*.jpeg
*.png
```
🎞️ VideoEmpfehlungen ---
Format: MP4 ## 🎞️ Video-Empfehlungen
Codec: H.264
Audio: optional, Autoplay ist standardmäßig ohne Ton
Auflösung: max. FullHD (1920×1080)
BeispielKonvertierung: - Format: MP4
Shellffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4Weitere Zeilen anzeigen - Codec: H.264
- Auflösung: max. 1920x1080
🔐 Sicherheit ```bash
ffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
```
AdminBereich per Login geschützt ---
Keine anonyme Administration
PlayerSeiten öffentlich (ReadOnly)
Für externe Zugriffe: Reverse Proxy + TLS (z.B. Nginx Proxy Manager)
## 🔐 Sicherheit
🧭 Roadmap (optional) - Admin-Bereich per Login geschützt
- Player-Seiten Read-Only
- Externe Nutzung via Reverse Proxy + TLS empfohlen
⏰ Zeitsteuerung pro PlaylistEintrag ---
👁 Vorschau im AdminPortal
👥 Mehrere AdminUser / Rollen
🗄️ Migration von config.json → SQLite
🐳 DockerComposeSetup
## 🧭 Roadmap
👤 Maintainer - Zeitsteuerung pro Playlist-Eintrag
CANCOM Simple Signage - Vorschau im Admin-Portal
- Mehrere Admin-User
- SQLite statt config.json
- Docker-Compose Setup
---
## 👤 Maintainer
**CANCOM Simple Signage**
Interne Lösung nicht für externe Weitergabe bestimmt. Interne Lösung nicht für externe Weitergabe bestimmt.