Stundenerfassungs-System
Eine webbasierte Anwendung zur Erfassung von Arbeitszeiten mit Admin-Bereich, PDF-Export, Überstunden-Verwaltung und LDAP-Integration.
Features
Für Mitarbeiter
- ✅ Login mit Benutzername und Passwort oder LDAP
- ✅ Wöchentliche Stundenerfassung (Montag - Sonntag)
- ✅ Automatisches Speichern der Einträge
- ✅ Eingabe von Start-/Endzeit, Pausen und Notizen
- ✅ Mehrere Tätigkeiten pro Tag mit Projektnummern (bis zu 5)
- ✅ Automatische Berechnung der Gesamtstunden
- ✅ Überstunden-Verwaltung (Anzeige und Verbrauch)
- ✅ Urlaubsverwaltung (ganzer/halber Tag)
- ✅ Krankheitstage erfassen
- ✅ Feiertage werden automatisch erkannt
- ✅ Wochenend-Prozentsätze (konfigurierbar)
- ✅ Wöchentliches Abschicken des Stundenzettels
- ✅ Überstunden-Auswertung pro Woche mit detaillierter Aufschlüsselung
- ✅ Anzeige aktueller Überstunden und verbleibender Urlaubstage
- ✅ Automatische Zeiterfassung via IP-Ping (optional)
- ✅ QR-Code für Check-in/Check-out
Für Administratoren
- ✅ Benutzerverwaltung (Anlegen, Löschen, Bearbeiten)
- ✅ Rollenvergabe (Mitarbeiter, Verwaltung, Admin)
- ✅ Mehrere Rollen pro Benutzer möglich
- ✅ Übersicht aller Benutzer mit Statistiken
- ✅ Personalnummern verwalten
- ✅ Wochenstunden und Urlaubstage pro Mitarbeiter konfigurieren
- ✅ LDAP-Integration für Benutzer-Synchronisation
- ✅ LDAP-Konfiguration und manuelle/automatische Synchronisation
- ✅ System-Optionen (Wochenend-Prozentsätze)
Für Verwaltung
- ✅ Postfach mit eingereichten Stundenzetteln
- ✅ PDF-Generierung und Download
- ✅ Übersichtliche Darstellung aller Einreichungen
- ✅ Wochenansicht mit Statistiken pro Mitarbeiter
- ✅ Überstunden-Offset (manuelle Korrekturen)
- ✅ Admin-Kommentare zu Stundenzetteln
- ✅ Versionsverwaltung bei Änderungen
- ✅ Übersicht über Überstunden und Urlaubstage aller Mitarbeiter
Installation
Voraussetzungen
- Node.js (Version 14 oder höher)
- npm (wird mit Node.js installiert)
Schritt 1: Dependencies installieren
npm install
Schritt 2: Server starten
npm start
Der Server läuft nun auf http://localhost:3333
Für Entwicklung mit automatischem Neustart:
npm run dev
Docker (optional)
Das System kann auch mit Docker betrieben werden:
docker-compose up -d
Standard-Zugangsdaten
Nach der Installation sind folgende Benutzer verfügbar:
Administrator
- Benutzername: admin
- Passwort: admin123
- Funktion: Kann Benutzer anlegen und verwalten, LDAP konfigurieren
Verwaltung
- Benutzername: verwaltung
- Passwort: verwaltung123
- Funktion: Kann eingereichte Stundenzettel einsehen, PDFs erstellen und Überstunden korrigieren
WICHTIG: Bitte ändern Sie diese Passwörter nach der ersten Anmeldung!
Verwendung
Für Mitarbeiter
- Melden Sie sich mit Ihren Zugangsdaten an
- Wählen Sie die gewünschte Woche aus (Pfeiltasten)
- Tragen Sie Ihre Arbeitszeiten ein:
- Start: Arbeitsbeginn
- Ende: Arbeitsende
- Pause: Pausenzeit in Minuten
- Tätigkeiten: Bis zu 5 Tätigkeiten mit Beschreibung, Stunden und Projektnummer
- Notizen: Optional, z.B. Projekt oder Tätigkeit
- Überstunden: Optional, wenn Überstunden verbraucht werden sollen
- Urlaub: Ganzer oder halber Tag Urlaub
- Krank: Krankheitstag markieren
- Die Einträge werden automatisch gespeichert
- Am Ende der Woche: Klicken Sie auf "Woche abschicken"
- Nach dem Abschicken können keine Änderungen mehr vorgenommen werden
- Überstunden-Auswertung: Klicken Sie auf "Details anzeigen" im Bereich "Aktuelle Überstunden" für eine wöchentliche Aufschlüsselung
Für Administratoren
- Melden Sie sich als Admin an
- Sie gelangen automatisch zur Benutzerverwaltung
- Neuen Benutzer anlegen:
- Füllen Sie das Formular aus
- Wählen Sie die passende Rolle (mehrere möglich)
- Personalnummer, Wochenstunden und Urlaubstage konfigurieren
- Klicken Sie auf "Benutzer anlegen"
- Benutzer löschen:
- Klicken Sie auf "Löschen" neben dem gewünschten Benutzer
- System-Benutzer (Admin, Verwaltung) können nicht gelöscht werden
- LDAP konfigurieren:
- Navigieren Sie zum LDAP-Bereich
- Konfigurieren Sie LDAP-Verbindung und Synchronisation
- Führen Sie manuelle Synchronisationen durch oder aktivieren Sie automatische Syncs
Für Verwaltung
- Melden Sie sich als Verwaltungs-Benutzer an
- Sie sehen alle eingereichten Stundenzettel im Postfach
- PDF erstellen:
- Klicken Sie auf "PDF herunterladen" neben dem gewünschten Stundenzettel
- Die PDF wird automatisch generiert und heruntergeladen
- Überstunden korrigieren:
- In der Wochenansicht können Sie manuelle Korrekturen (Offset) für jeden Mitarbeiter vornehmen
- Kommentare hinzufügen:
- Fügen Sie Admin-Kommentare zu Stundenzetteln hinzu
- Die PDF enthält:
- Mitarbeitername und Personalnummer
- Zeitraum
- Alle Tageseinträge mit Start, Ende, Pause, Stunden, Tätigkeiten und Notizen
- Überstunden-Verbrauch
- Urlaubstage
- Gesamtstundensumme
Technologie-Stack
- Backend: Node.js + Express
- Datenbank: SQLite3
- Template Engine: EJS
- PDF-Generierung: PDFKit
- Authentifizierung: bcryptjs + express-session
- LDAP: ldapjs
- QR-Codes: qrcode
Projektstruktur
stundenerfassung/
├── routes/ # API-Routen
│ ├── admin.js # Admin-Funktionen
│ ├── admin-ldap.js # LDAP-Verwaltung
│ ├── auth.js # Authentifizierung
│ ├── dashboard.js # Dashboard-Routen
│ ├── timesheet.js # Stundenerfassung
│ ├── user.js # Benutzer-APIs
│ └── verwaltung.js # Verwaltungs-Funktionen
├── services/ # Services
│ ├── feiertage-service.js # Feiertags-API
│ ├── ldap-service.js # LDAP-Service
│ ├── ldap-scheduler.js # LDAP-Synchronisation
│ ├── pdf-service.js # PDF-Generierung
│ └── ping-service.js # IP-basierte Zeiterfassung
├── views/ # EJS-Templates
├── public/ # Statische Dateien
│ ├── css/
│ ├── js/
│ └── images/
└── helpers/ # Helper-Funktionen
Datenbankstruktur
Tabelle: users
- Speichert Benutzerinformationen und Zugangsdaten
- Passwörter werden verschlüsselt gespeichert
- Unterstützt mehrere Rollen pro Benutzer
- Personalnummer, Wochenstunden, Urlaubstage, Überstunden-Offset
Tabelle: timesheet_entries
- Speichert einzelne Tageseinträge
- Automatische Berechnung der Gesamtstunden
- Unterstützt mehrere Tätigkeiten pro Tag
- Überstunden-Verbrauch, Urlaub, Krankheit
Tabelle: weekly_timesheets
- Speichert eingereichte Wochenstundenzettel
- Verknüpfung mit Benutzer und Status
- Versionsverwaltung und Admin-Kommentare
Tabelle: system_options
- Systemweite Einstellungen
- Wochenend-Prozentsätze (Samstag/Sonntag)
Tabelle: public_holidays
- Öffentliche Feiertage (Baden-Württemberg)
- Automatische Aktualisierung
Tabelle: ldap_config
- LDAP-Konfiguration
- Synchronisationseinstellungen
Tabelle: ping_status
- IP-basierte Zeiterfassung
- Ping-Status pro Benutzer und Tag
Features im Detail
Überstunden-Verwaltung
- Automatische Berechnung basierend auf Sollstunden
- Berücksichtigung von Wochenend-Prozentsätzen
- Feiertagsstunden werden automatisch hinzugefügt
- Urlaubsstunden werden in die Berechnung einbezogen
- Manuelle Korrekturen durch Verwaltung möglich
- Detaillierte wöchentliche Auswertung für Mitarbeiter
Urlaubsverwaltung
- Ganzer oder halber Tag Urlaub
- Verbleibende Urlaubstage werden angezeigt
- Verplante Urlaubstage werden erfasst
- Urlaubstage werden in Überstunden-Berechnung berücksichtigt
Wochenend-Prozentsätze
- Konfigurierbare Prozentsätze für Samstag und Sonntag
- Werden automatisch auf gearbeitete Stunden angewendet
- Standard: 100% (keine Zuschläge)
Feiertage
- Automatische Erkennung öffentlicher Feiertage (Baden-Württemberg)
- Feiertagsstunden werden automatisch berechnet
- Arbeit an Feiertagen zählt als Überstunden
LDAP-Integration
- Automatische Benutzer-Synchronisation
- Konfigurierbare Synchronisationsintervalle
- Manuelle Synchronisation möglich
- LDAP-Authentifizierung als Alternative zu lokalen Passwörtern
Sicherheit
- ✅ Passwörter werden mit bcrypt verschlüsselt
- ✅ Session-basierte Authentifizierung
- ✅ Rollenbasierte Zugriffskontrolle
- ✅ CSRF-Schutz durch Sessions
- ✅ LDAP-Integration für zentrale Authentifizierung
- ✅ SQL-Injection-Schutz durch parametrisierte Queries
Anpassungen
Port ändern
Bearbeiten Sie in server.js die Zeile:
const PORT = 3333; // Ändern Sie hier den Port
Datenbank-Speicherort
Die Datenbank wird standardmäßig als stundenerfassung.db im Projektverzeichnis gespeichert.
Über die Umgebungsvariable DB_PATH kann ein anderer Pfad angegeben werden.
Wochenend-Prozentsätze
Im Admin-Bereich können die Prozentsätze für Samstag und Sonntag konfiguriert werden. Standard: 100% (keine Zuschläge).
Lizenz
Proprietär - Für interne Firmennutzung
Support
Bei Fragen oder Problemen wenden Sie sich bitte an Ihre IT-Abteilung.