2026-02-04 19:03:42 +01:00
2026-02-02 19:12:40 +01:00
2026-02-04 19:03:42 +01:00
2026-01-30 10:44:07 +01:00
2026-02-04 19:03:42 +01:00
2026-02-04 19:03:42 +01:00
2026-02-04 16:08:40 +01:00
2026-02-03 23:25:37 +01:00
2026-02-02 19:12:40 +01:00
2026-02-02 19:12:40 +01:00
2026-01-30 18:59:00 +01:00
2026-02-03 22:32:49 +01:00
2026-01-30 10:44:07 +01:00
2026-01-30 10:44:07 +01:00
2026-02-04 16:08:40 +01:00
2026-02-04 16:08:40 +01:00
2026-02-04 16:08:40 +01:00
2026-01-30 18:59:00 +01:00
2026-02-04 16:08:40 +01:00
2026-02-03 21:32:20 +01:00
2026-02-02 19:12:40 +01:00
2026-01-30 10:44:07 +01:00
2026-02-03 23:25:37 +01:00
2026-02-03 22:32:49 +01:00
2026-02-04 19:03:42 +01:00

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

  1. Melden Sie sich mit Ihren Zugangsdaten an
  2. Wählen Sie die gewünschte Woche aus (Pfeiltasten)
  3. 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
  4. Die Einträge werden automatisch gespeichert
  5. Am Ende der Woche: Klicken Sie auf "Woche abschicken"
  6. Nach dem Abschicken können keine Änderungen mehr vorgenommen werden
  7. Überstunden-Auswertung: Klicken Sie auf "Details anzeigen" im Bereich "Aktuelle Überstunden" für eine wöchentliche Aufschlüsselung

Für Administratoren

  1. Melden Sie sich als Admin an
  2. Sie gelangen automatisch zur Benutzerverwaltung
  3. 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"
  4. Benutzer löschen:
    • Klicken Sie auf "Löschen" neben dem gewünschten Benutzer
    • System-Benutzer (Admin, Verwaltung) können nicht gelöscht werden
  5. 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

  1. Melden Sie sich als Verwaltungs-Benutzer an
  2. Sie sehen alle eingereichten Stundenzettel im Postfach
  3. PDF erstellen:
    • Klicken Sie auf "PDF herunterladen" neben dem gewünschten Stundenzettel
    • Die PDF wird automatisch generiert und heruntergeladen
  4. Überstunden korrigieren:
    • In der Wochenansicht können Sie manuelle Korrekturen (Offset) für jeden Mitarbeiter vornehmen
  5. Kommentare hinzufügen:
    • Fügen Sie Admin-Kommentare zu Stundenzetteln hinzu
  6. 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-routes.js        # Admin-Funktionen
│   ├── admin-ldap-routes.js   # LDAP-Verwaltung
│   ├── auth-routes.js         # Authentifizierung
│   ├── dashboard-routes.js        # Dashboard-Routen
│   ├── timesheet-routes.js    # Stundenerfassung
│   ├── user-routes.js         # Benutzer-APIs
│   └── verwaltung-routes.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.

Description
No description provided
Readme 2 MiB
Languages
JavaScript 70.9%
EJS 25.6%
CSS 3.4%