OpenProject Cross-Projekt-Dashboard - zeigt offene Arbeitspakete projektuebergreifend inkl. Inhalt
  • HTML 60.7%
  • Python 39.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Michael Stahlberg 9a1d631c10 Initial commit: OpenProject Cross-Projekt-Dashboard
Flask+Gunicorn-App, zeigt offene Arbeitspakete projektuebergreifend inkl.
Beschreibung, Faelligkeits-Ampel und Suche - loest die Luecke der
eingebauten OpenProject-Work-Packages-Ansicht (kein Inhalt sichtbar).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 15:38:22 +02:00
templates Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00
.env.example Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00
.gitignore Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00
app.py Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00
op-dashboard.service Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00
README.md Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00
requirements.txt Initial commit: OpenProject Cross-Projekt-Dashboard 2026-07-17 15:38:22 +02:00

OpenProject Cross-Projekt-Dashboard

Zeigt alle offenen Arbeitspakete aus OpenProject projektübergreifend in einer kompakten Web-Ansicht — inkl. der vollen Beschreibung. Löst die Lücke der eingebauten globalen "Work packages"-Ansicht von OpenProject, die nur Titel/Status/Projekt pro Zeile anzeigt, aber keinen Inhalt.

Details und Hintergrund im Vault: 30 Projekte/OpenProject Cross-Projekt-Übersicht.md.

Funktionsweise

  • Fragt bei jedem Seitenaufruf /api/v3/work_packages mit Filter status=open ab.
  • Gruppiert nach Projekt (meiste offene Pakete zuerst).
  • Pro Arbeitspaket: Titel (verlinkt zu OpenProject), Status, Fälligkeitsdatum (farblich markiert — rot = überfällig, gelb = fällig binnen 7 Tagen), Bearbeiter, und die volle Beschreibung aufklappbar.
  • Freitext-Suche filtert clientseitig über Titel/Beschreibung/Projekt.

Setup

python3 -m venv venv
./venv/bin/pip install -r requirements.txt gunicorn
cp .env.example .env   # OP_API_TOKEN eintragen
./venv/bin/gunicorn -w 2 -b 0.0.0.0:8420 app:app

Für Dauerbetrieb: op-dashboard.service nach /etc/systemd/system/ kopieren, dann systemctl enable --now op-dashboard.

Bekannte Einschränkung: Hairpin-NAT

Läuft der Dashboard-Container auf demselben Host wie OpenProject selbst und die öffentliche Domain zeigt auf die eigene WAN-IP dieses Hosts, kann der Container die Domain nicht direkt erreichen (Traffic zur eigenen öffentlichen IP wird nicht zurückgeroutet). Workaround: einen /etc/hosts-Eintrag setzen, der die Domain intern auf die OpenProject-Container-IP umbiegt — dafür ist verify=False bei den Requests nötig (Zertifikat passt dann nicht mehr exakt zur IP), was für rein internen Traffic zwischen zwei Containern auf demselben Host unkritisch ist.

Deployment (Stand 17.07.2026)

LXC (CTID 200201, Debian 12) auf dem Hetzner-Proxmox-Host gtx (10.0.255.253, Firmen-Infrastruktur), IP 10.0.200.201, erreichbar unter http://10.0.200.201:8420/.