- PHP 91.8%
- Blade 6.8%
- JavaScript 0.8%
- CSS 0.3%
- Dockerfile 0.2%
- Other 0.1%
|
All checks were successful
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 |
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| docs | ||
| lang | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| artisan | ||
| CHANGELOG.md | ||
| composer.json | ||
| composer.lock | ||
| docker-compose.build.yml | ||
| docker-compose.quickstart.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| HANDOVER.md | ||
| package.json | ||
| phpunit.xml | ||
| README.md | ||
| vite.config.js | ||
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 |
|---|---|---|
![]() |
![]() |
![]() |
Screenshots noch nicht vorhanden? Lege die PNGs unter docs/screenshots/ ab (Dateinamen siehe docs/SCREENSHOTS.md). Bitte nur anonymisierte Demo-Daten verwenden.


