No description
  • PHP 91.8%
  • Blade 6.8%
  • JavaScript 0.8%
  • CSS 0.3%
  • Dockerfile 0.2%
  • Other 0.1%
Find a file
Markus Thiel 5cee0216a9
All checks were successful
Tests / phpunit (push) Successful in 1m59s
Build & Push Docker Image / quality (push) Successful in 1m36s
Build & Push Docker Image / build (push) Successful in 1m32s
Build & Push Docker Image / Trigger Portainer redeploy (push) Successful in 0s
SVG-Erkennung: PNG mit SVG-Metadaten nicht mehr verwerfen (0.60.3)
Ein PNG aus einem Vektorprogramm traegt "<svg" in seinem XMP-Metadatenblock.
Svg::looksLikeSvg() suchte die Zeichenfolge irgendwo in den ersten 4 KB, hielt
die Datei fuer ein SVG und schickte sie durch den Sanitizer - der bei einem
Rasterbild null liefert. Das Bild fehlte danach ohne Fehlermeldung.

Die Erkennung wertet jetzt nur noch den Dateianfang. Magic Bytes von PNG, JPEG,
GIF, WebP, BMP, TIFF und PDF schliessen SVG aus; vor einem <svg> duerfen nur
XML-Deklaration, Kommentare und DOCTYPE stehen. Svg::istSvg() bewertet Inhalt
und Content-Type zusammen.

Derselbe Fehler trat in Eveni auf (0.378.1): Dort fehlten Event-Logo und
Hintergrundgrafik auf gedruckten Namensschildern. Der Baustein ist in allen
Werkzeugen derselbe.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GH42FE3UD2ht9qvNWRReDK
2026-10-05 14:28:45 +02:00
.forgejo/workflows CI: Rollout einheitlich nur ueber Tags, Bedingung am Schritt 2026-09-29 20:31:15 +02:00
app SVG-Erkennung: PNG mit SVG-Metadaten nicht mehr verwerfen (0.60.3) 2026-10-05 14:28:45 +02:00
bootstrap Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
config SVG-Erkennung: PNG mit SVG-Metadaten nicht mehr verwerfen (0.60.3) 2026-10-05 14:28:45 +02:00
database Personalakte: Dokumentarten mit Schutzstufe 2026-10-01 21:19:22 +02:00
docker Personalakte: Dokumentarten mit Schutzstufe 2026-10-01 21:19:22 +02:00
docs Schrift und Platzhalter-Avatar lokal ausliefern 2026-10-01 21:44:33 +02:00
lang fix: handle temporary Livewire connection errors (0.51.1) 2026-09-24 08:49:01 +02:00
public Schrift und Platzhalter-Avatar lokal ausliefern 2026-10-01 21:44:33 +02:00
resources Personalkosten je Abrechnungsmonat richtig erzeugen 2026-10-01 20:12:46 +02:00
routes Stempeluhr: kein stilles Buchen beim Seitenaufruf, ehrlicher Status 2026-09-23 17:13:07 +02:00
storage Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
tests SVG-Erkennung: PNG mit SVG-Metadaten nicht mehr verwerfen (0.60.3) 2026-10-05 14:28:45 +02:00
.dockerignore Apply security audit fixes and update vulnerable dependencies 2026-09-14 18:45:47 +02:00
.editorconfig Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
.env.example Durchgängig echte Umlaute (ä/ö/ü/ß) in UI-Texten, Meldungen und Kommentaren statt ASCII-Umschreibungen; Maschinennamen und ss-Wörter unverändert. v0.3.1 2026-06-23 08:24:26 +00:00
.gitattributes Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
.gitignore Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
.npmrc Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
artisan Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
CHANGELOG.md SVG-Erkennung: PNG mit SVG-Metadaten nicht mehr verwerfen (0.60.3) 2026-10-05 14:28:45 +02:00
composer.json feat: konfigurierbares Zusatzmenue im Benutzermenue (App-Wechsel) mit Icon-Picker + Import/Export 2026-06-24 06:35:35 +00:00
composer.lock Abhaengigkeiten mit Sicherheitshinweisen aktualisieren 2026-10-01 10:10:05 +02:00
docker-compose.build.yml Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
docker-compose.quickstart.yml Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
docker-compose.yml Apply security audit fixes and update vulnerable dependencies 2026-09-14 18:45:47 +02:00
Dockerfile Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00
HANDOVER.md ci: Image-Tags von main und Versions-Tag trennen 2026-09-23 18:00:02 +02:00
package.json fix: handle temporary Livewire connection errors (0.51.1) 2026-09-24 08:49:01 +02:00
phpunit.xml CI/Tests: festen APP_KEY in phpunit.xml setzen (Filament-View-Verschluesselung), .env-unabhaengig 2026-06-23 06:38:42 +00:00
README.md Apply security audit fixes and update vulnerable dependencies 2026-09-14 18:45:47 +02:00
vite.config.js Persona v0.1.0: HR-Grundgeruest (Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding, Personalkosten/DATEV) inkl. Mitarbeitenden-Self-Service 2026-06-23 06:24:04 +00:00

Persona

Personalverwaltung mit Mitarbeitenden-Self-Service fuer Vereine, Verbaende und Einrichtungen. Persona buendelt Stammdaten, Organisation, Beschaeftigung, Abwesenheiten/Urlaub, On-/Offboarding sowie eine schlanke Personalkosten- und DATEV-Exportschicht in einer eigenstaendigen Anwendung.

Module (MVP)

  • Stammdaten & Organisation — Mitarbeitende, Abteilungen (inkl. Kostenstelle und Hierarchie) und Stellen. Sensible Felder (IBAN/BIC, Steuer-ID, SV-Nummer) werden verschluesselt gespeichert.
  • Beschaeftigung/Vertraege — mehrere Beschaeftigungen je Person (Art, Pensum, Wochenstunden, Gehalt, Zeitraum) mit aktueller Beschaeftigung.
  • Abwesenheiten/Urlaub — Antraege mit Halbtagen, automatischer Werktagsberechnung nach individuellem Arbeitsplan (ohne Plan: globale Wochenendregel), Genehmigungs-/Ablehnungs-Workflow und Urlaubskonto je Jahr (Anspruch + Uebertrag - genommen = Rest). Abwesenheitsarten frei konfigurierbar.
  • On-/Offboarding — Checklisten-Vorlagen mit relativen Faelligkeiten; per Klick als personenbezogene Aufgaben mit Termin instanziierbar.
  • Personalkosten & DATEV — Personalkosten-Zeilen je Zeitraum (aus Beschaeftigungen erzeugbar) und Export als DATEV-EXTF-Buchungsstapel. Hinweis: Dies ist eine Export-/Buchungsschicht, keine Lohn-/Gehaltsabrechnung (keine Steuer-/SV-Berechnung) — Werte mit dem Steuerbuero pruefen.

Self-Service (Panel /mitarbeiter)

Mitarbeitende sehen ausschliesslich ihre eigenen Daten: Abwesenheiten beantragen und stornieren (inkl. Urlaubskontostand), eigene Qualifikationen und Onboarding-Aufgaben einsehen/abhaken sowie Kontakt- und Bankdaten pflegen. Der Zugang ist an eine verknuepfte Mitarbeitenden-Person gebunden.

Rollen

  • super_admin — alle Rechte.
  • personal — alle operativen HR-Rechte (ohne Konfiguration/Benutzer).
  • fuehrungskraft — Personal und Abwesenheiten verwalten.

Stack

Laravel 13, Filament v5, PostgreSQL 16, FrankenPHP — gleiche Basis sowie Release-/CI- Konventionen wie die uebrigen natec-Anwendungen.

Konfiguration

Funktionsschalter und Stammwerte (Organisation, Branding, Mail/SMS, Backup, Urlaubs-Standard, DATEV-Konten) liegen in der In-App-Konfiguration; ENV dient nur als Fallback. Es sind keine Kontonummern fest im Code hinterlegt.

Setup (lokal)

composer install
php artisan migrate --seed   # legt Rollen/Rechte + Standard-Abwesenheitsarten an
php artisan persona:ensure-admin

Verknuepfung zu Vereo

Optional ueber das Referenzfeld vereo_ref an Mitarbeitenden — lose Kopplung ohne gemeinsame Datenbank.

Stand

v0.1.0 ist das Fundament: vollstaendiges HR-Domaenenmodell, Admin- und Self-Service-Panel, Abwesenheits- und Checklisten-Workflow sowie DATEV-Export. Tiefergehende Workflows folgen iterativ.

Screenshots

Ein visueller Ueberblick. Die vollstaendige Galerie findest du in docs/SCREENSHOTS.md.

Mitarbeitendenliste Mitarbeiter-Detail Abwesenheiten / Urlaub
Mitarbeitendenliste Mitarbeiter-Detail Abwesenheiten / Urlaub

Screenshots noch nicht vorhanden? Lege die PNGs unter docs/screenshots/ ab (Dateinamen siehe docs/SCREENSHOTS.md). Bitte nur anonymisierte Demo-Daten verwenden.