153 lines
4.0 KiB
Markdown
153 lines
4.0 KiB
Markdown
# 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.
|