# Stundenerfassungs-System Eine webbasierte Anwendung zur Erfassung von Arbeitszeiten mit Admin-Bereich und PDF-Export. ## Features ### Für Mitarbeiter - ✅ Login mit Benutzername und Passwort - ✅ Wöchentliche Stundenerfassung (Montag - Sonntag) - ✅ Automatisches Speichern der Einträge - ✅ Eingabe von Start-/Endzeit, Pausen und Notizen - ✅ Automatische Berechnung der Gesamtstunden - ✅ Wöchentliches Abschicken des Stundenzettels ### Für Administratoren - ✅ Benutzerverwaltung (Anlegen, Löschen) - ✅ Rollenvergabe (Mitarbeiter, Verwaltung, Admin) - ✅ Übersicht aller Benutzer ### Für Verwaltung - ✅ Postfach mit eingereichten Stundenzetteln - ✅ PDF-Generierung und Download - ✅ Übersichtliche Darstellung aller Einreichungen ## Installation ### Voraussetzungen - Node.js (Version 14 oder höher) - npm (wird mit Node.js installiert) ### Schritt 1: Dependencies installieren ```bash npm install ``` ### Schritt 2: Server starten ```bash npm start ``` Der Server läuft nun auf `http://localhost:3333` Für Entwicklung mit automatischem Neustart: ```bash npm run dev ``` ## Standard-Zugangsdaten Nach der Installation sind folgende Benutzer verfügbar: ### Administrator - **Benutzername:** admin - **Passwort:** admin123 - **Funktion:** Kann Benutzer anlegen und verwalten ### Verwaltung - **Benutzername:** verwaltung - **Passwort:** verwaltung123 - **Funktion:** Kann eingereichte Stundenzettel einsehen und PDFs erstellen **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 - **Notizen:** Optional, z.B. Projekt oder Tätigkeit 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 ### 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 - 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 ### 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. Die PDF enthält: - Mitarbeitername - Zeitraum - Alle Tageseinträge mit Start, Ende, Pause, Stunden und Notizen - Gesamtstundensumme ## Technologie-Stack - **Backend:** Node.js + Express - **Datenbank:** SQLite3 - **Template Engine:** EJS - **PDF-Generierung:** PDFKit - **Authentifizierung:** bcryptjs + express-session ## Datenbankstruktur ### Tabelle: users - Speichert Benutzerinformationen und Zugangsdaten - Passwörter werden verschlüsselt gespeichert ### Tabelle: timesheet_entries - Speichert einzelne Tageseinträge - Automatische Berechnung der Gesamtstunden ### Tabelle: weekly_timesheets - Speichert eingereichte Wochenstundenzettel - Verknüpfung mit Benutzer und Status ## Sicherheit - ✅ Passwörter werden mit bcrypt verschlüsselt - ✅ Session-basierte Authentifizierung - ✅ Rollenbasierte Zugriffskontrolle - ✅ CSRF-Schutz durch Sessions ## Anpassungen ### Port ändern Bearbeiten Sie in `server.js` die Zeile: ```javascript const PORT = 3333; // Ändern Sie hier den Port ``` ### Datenbank-Speicherort Die Datenbank wird standardmäßig als `stundenerfassung.db` im Projektverzeichnis gespeichert. ## Lizenz Proprietär - Für interne Firmennutzung ## Support Bei Fragen oder Problemen wenden Sie sich bitte an Ihre IT-Abteilung.