LeaveFlow
LeaveFlow ist eine selbst gehostete Urlaubsverwaltung für kleine und mittlere Unternehmen mit Genehmigungsworkflow, Teamkalender, Urlaubskonten, deutschen Feiertagen und DSGVO-Funktionen. Läuft per Docker.
LeaveFlow
Live-Demo: Teste LeaveFlow live unter demo.markus-michalski.net, ohne Installation und ohne Risiko.
Überblick
LeaveFlow ist eine selbst gehostete Urlaubsverwaltung für kleine und mittlere Unternehmen. Mitarbeitende stellen Urlaubsanträge, Teamleitungen genehmigen sie, und Admins pflegen Urlaubskonten, Feiertage, Standorte und Anmeldeverfahren. Feiertage, Urlaubsverfall zum 31. März, Zwölftelregel und die 42-Tage-Krankheitsschwelle sind auf deutsches Arbeitsrecht ausgelegt.
Eine Installation verwaltet genau ein Unternehmen. Alle Daten liegen in deiner eigenen MariaDB-Datenbank, die Oberfläche gibt es auf Deutsch und Englisch.
LeaveFlow ist eine Docker-first-Anwendung: Der mitgelieferte Compose-Stack startet App, Datenbank, Mailpit und einen OpenLDAP-Testserver. Die Installation beschreibt die Seite Installation.
graph LR
A["Browser"] --> B["FrankenPHP mit Symfony-App"]
B --> C["MariaDB"]
B --> D["SMTP-Server oder Mailpit"]
E["Messenger-Worker: scheduler_notifications, scheduler_maintenance"] --> C
E --> D
B -.-> F["Slack, Teams, LDAP, Google, Entra (optional)"]
G["REST-API-Client"] --> B
Dokumentation
| Seite | Inhalt |
|---|---|
| Installation | Voraussetzungen, Start per Docker Compose, Einrichtungsassistent, Umgebungsvariablen, Update |
| Betrieb und Cron-Jobs | Messenger-Worker, geplante Jobs, Konsolenbefehle, Mailversand |
| Anmeldung und Integrationen | Google, Microsoft Entra ID, LDAP, Slack, Microsoft Teams |
| Datenschutz und DSGVO | Aufbewahrungsfrist, Anonymisierung, gespeicherte Daten, Zugriffsschutz |
| Admin-Leitfaden | Firmen-Einstellungen, Benutzer, Mitarbeiter, Teams, Standorte, Urlaubsarten, Urlaubskonten, Feiertage, Sperrfristen, Statistik |
| Manager-Leitfaden | Genehmigungen, Stornierungen, Team-Kalender, Benachrichtigungen |
| Mitarbeiter-Leitfaden | Urlaubsanträge, Urlaubskonto, Profil, iCal, 2FA, Benachrichtigungen |
| REST-API | Mitarbeiter-Endpunkte, Authentifizierung, Fehlerformat |
| Fehlerbehebung | Typische Probleme und ihre Ursachen |
Funktionen
| Funktion | Details |
|---|---|
| Urlaubsanträge | Ganze und halbe Tage, Live-Vorschau mit Arbeitsstunden, Saldo- und Sperrfristprüfung, keine rückwirkenden Anträge |
| Genehmigungsworkflow | Sechs Zustände, sieben Übergänge, Vier-Augen-Prinzip, Entscheidungsverlauf pro Antrag |
| Team-Kalender | FullCalendar mit Monats- und Wochenansicht, Filter nach Team und Urlaubsart, Feiertage und Sperrfristen als Hintergrund |
| Urlaubskonten | Urlaub und Resturlaub, Verbrauch zuerst aus dem früher verfallenden Konto, Jahresübergang per Cron-Job oder Befehl |
| Feiertage | Alle 16 Bundesländer inklusive Osterberechnung, regionale Anpassungen, firmenweite Feiertage |
| Benachrichtigungen | In-App, E-Mail (pro Ereignis abschaltbar), optional Slack und Microsoft Teams |
| Anmeldung | Lokal mit TOTP-2FA, Google Workspace, Microsoft Entra ID, LDAP/Active Directory |
| Auswertungen und Exporte | Statistik-Dashboard mit PDF-Export, CSV-Export von Urlaubskonten und Mitarbeitern, iCal-Abonnements |
| DSGVO | Aufbewahrungsfrist, manuelle Anonymisierung ehemaliger Mitarbeitender, Austrittsworkflow |
| REST-API | Mitarbeiter anlegen, lesen und ändern per Bearer-Token, Swagger UI unter /api/doc |
Rollen
LeaveFlow kennt drei Rollen, die aufeinander aufbauen: Ein Manager hat alle Rechte eines Mitarbeiters, ein Admin alle Rechte eines Managers.
| Rolle | Bereich | Aufgaben |
|---|---|---|
Administrator (ROLE_ADMIN) |
/admin/... |
Gesamte Konfiguration: Benutzer, Mitarbeiter, Teams, Standorte, Urlaubsarten, Urlaubskonten, Feiertage, Sperrfristen, Firmen-Einstellungen, Statistik, Anonymisierung, API-Token, Cron-Jobs |
Manager (ROLE_MANAGER) |
/manager/approvals |
Anträge der eigenen Teams genehmigen oder ablehnen, Stornierungen entscheiden |
Mitarbeiter (ROLE_EMPLOYEE) |
/my/..., /profile |
Urlaubsanträge stellen, Urlaubskonto einsehen, Profil, iCal und Benachrichtigungen verwalten |
Der Team-Kalender unter /team/calendar steht allen angemeldeten Benutzern offen. Sperrfristen verwaltet ausschließlich der Admin unter /admin/blackout-periods.
Ein Benutzerkonto ist nicht automatisch ein Mitarbeiter: Wer Urlaub beantragen oder genehmigen soll, braucht zusätzlich einen verknüpften Mitarbeiterdatensatz. Der im Einrichtungsassistenten angelegte Admin hat zunächst keinen.
Anforderungen
| Anforderung | Wert | Hinweise |
|---|---|---|
| Docker | Docker mit Compose-Plugin (docker compose) |
Der mitgelieferte Stack startet App, Datenbank, Mailpit und OpenLDAP |
| PHP | 8.4 oder neuer | Im Docker-Image enthalten (FrankenPHP-Basisimage) |
| PHP-Erweiterungen | pdo_mysql, intl, gd, mbstring, json, curl, ctype, fileinfo |
Prüft der Einrichtungsassistent; das Image bringt sie mit, zusätzlich ldap |
| Datenbank | MariaDB 11.4 | Image mariadb:11.4 im Compose-Stack |
| HTTPS | außerhalb von localhost nötig |
Die PHP-Konfiguration setzt Session-Cookies mit dem Secure-Flag |
Lizenz
LeaveFlow steht unter der PolyForm Noncommercial License 1.0.0. Der Quelltext ist einsehbar und selbst hostbar, nichtkommerzielle Nutzung ist kostenlos, kommerzielle Nutzung erfordert eine separate Vereinbarung.
Mitwirken
Beiträge erfordern die Unterzeichnung des Contributor License Agreement. Den Entwicklungsworkflow beschreibt CONTRIBUTING.md.
Support
Fehler und Feature-Wünsche meldest du in den GitHub Issues. Der Quelltext liegt im GitHub-Repository.