Add settings management with Bundesland selection and holiday calculations
This commit is contained in:
100
README.md
100
README.md
@@ -4,14 +4,58 @@ Eine Full-Stack-Zeiterfassungsanwendung, entwickelt mit Node.js, Express, SQLite
|
||||
|
||||
## Funktionen
|
||||
|
||||
- ✅ Erfassung von Arbeitszeiten (Datum, Startzeit, Endzeit)
|
||||
- ✅ Automatische Pausenberechnung nach deutschem Arbeitszeitgesetz
|
||||
- ✅ Maximum von 10 Stunden Nettoarbeitszeit
|
||||
- ✅ Filterung nach Zeitraum
|
||||
- ✅ CSV-Export mit deutscher Formatierung
|
||||
- ✅ Responsive Benutzeroberfläche mit Tailwind CSS
|
||||
- ✅ Moderner Datums-/Zeitauswahl (Flatpickr)
|
||||
- ✅ Docker-Containerisierung
|
||||
### Zeiterfassung
|
||||
- ✅ **Start/Stop Timer**: Live-Timer mit automatischer Zeiterfassung für den aktuellen Tag
|
||||
- Pause nach 6 Stunden (30 Min) oder 9 Stunden (45 Min) gemäß deutschem Arbeitszeitgesetz
|
||||
- Automatische Rundung auf 15-Minuten-Intervalle
|
||||
- Timer läuft auch nach Seiten-Reload weiter
|
||||
- ✅ **Manuelle Eingabe**: Erfassung von Arbeitszeiten (Datum, Startzeit, Endzeit, Pause)
|
||||
- ✅ **Inline-Bearbeitung**: Schnelle Änderung von Zeiten durch Klick in die Tabelle
|
||||
- ✅ **Standort-Tracking**: Home-Office oder Büro pro Eintrag
|
||||
|
||||
### Intelligente Berechnungen
|
||||
- ✅ **Automatische Pausenberechnung** nach deutschem Arbeitszeitgesetz:
|
||||
- \> 6 Stunden: 30 Minuten Pause
|
||||
- \> 9 Stunden: 45 Minuten Pause
|
||||
- ✅ **Maximum von 10 Stunden Nettoarbeitszeit** pro Tag
|
||||
- ✅ **Monatliche Statistiken**: Soll-Stunden, Ist-Stunden, Saldo (Monat + Gesamt)
|
||||
- ✅ **Arbeitstage-Berechnung**: Automatische Erkennung von Wochenenden und Feiertagen
|
||||
|
||||
### Bundesland-spezifische Feiertage
|
||||
- ✅ **16 Bundesländer**: Auswahl des Bundeslandes für korrekte Feiertagsberechnung
|
||||
- ✅ **Persistente Einstellung**: Bundesland-Auswahl wird gespeichert
|
||||
- ✅ **Kollisionserkennung**: Warnung bei Feiertagen, die mit bestehenden Einträgen kollidieren
|
||||
- ✅ **Alle regionalen Feiertage**: Heilige Drei Könige, Fronleichnam, Reformationstag, etc.
|
||||
|
||||
### Monatsansicht & Navigation
|
||||
- ✅ **Monatskalender**: Vollständige Ansicht aller Tage des Monats
|
||||
- ✅ **Farbcodierung**:
|
||||
- Grün: Home-Office Tage
|
||||
- Rot: Fehlende Einträge an Arbeitstagen
|
||||
- Grau: Wochenenden
|
||||
- Blau: Feiertage mit Namen
|
||||
- ✅ **Vor/Zurück Navigation**: Einfaches Wechseln zwischen Monaten
|
||||
- ✅ **Auto-Fill Funktion**: Automatisches Ausfüllen des gesamten Monats mit Standard-Arbeitszeiten
|
||||
|
||||
### Bulk-Operationen
|
||||
- ✅ **Mehrfachauswahl**: Checkbox-Modus für schnelle Massenbearbeitung
|
||||
- ✅ **Bulk-Standort setzen**: Mehrere Einträge auf einmal auf Home/Büro setzen
|
||||
- ✅ **Bulk-Löschen**: Mehrere Einträge auf einmal löschen
|
||||
|
||||
### Filter & Export
|
||||
- ✅ **Zeitraum-Filter**: Filterung nach Datum (Von/Bis)
|
||||
- ✅ **CSV-Export (Alle)**: Export aller Einträge im gewählten Zeitraum
|
||||
- ✅ **CSV-Export (Abweichungen)**: Export nur der Tage mit Abweichungen von 8,0 Stunden
|
||||
- Ideal für Arbeitszeitnachweise bei Gleitzeit
|
||||
- Zeigt nur relevante Über-/Unterschreitungen
|
||||
- ✅ **Deutsches Format**: Komma als Dezimaltrennzeichen, DD.MM.YYYY Datumsformat
|
||||
|
||||
### Benutzerfreundlichkeit
|
||||
- ✅ **Responsive Design**: Optimiert für Desktop, Tablet und Smartphone
|
||||
- ✅ **Dark Mode**: Modernes dunkles Design für augenschonende Arbeit
|
||||
- ✅ **Toast-Benachrichtigungen**: Visuelles Feedback bei Aktionen
|
||||
- ✅ **Flatpickr**: Moderne Datums- und Zeitauswahl mit Touch-Support
|
||||
- ✅ **Persistente Daten**: SQLite-Datenbank mit automatischer Migration
|
||||
|
||||
## Technologie-Stack
|
||||
|
||||
@@ -61,11 +105,20 @@ Die Anwendung berechnet automatisch die Pausenzeiten gemäß deutschem Arbeitsze
|
||||
|
||||
## API-Endpunkte
|
||||
|
||||
### Zeiteinträge
|
||||
- `GET /api/entries?from=YYYY-MM-DD&to=YYYY-MM-DD` - Alle Einträge im Zeitraum abrufen
|
||||
- `POST /api/entries` - Neuen Eintrag erstellen
|
||||
- `PUT /api/entries/:id` - Bestehenden Eintrag aktualisieren
|
||||
- `DELETE /api/entries/:id` - Eintrag löschen
|
||||
- `GET /api/export?from=YYYY-MM-DD&to=YYYY-MM-DD` - Einträge als CSV exportieren
|
||||
|
||||
### Export
|
||||
- `GET /api/export?from=YYYY-MM-DD&to=YYYY-MM-DD` - Alle Einträge als CSV exportieren
|
||||
- `GET /api/export-deviations?from=YYYY-MM-DD&to=YYYY-MM-DD` - Nur Abweichungen als CSV exportieren
|
||||
|
||||
### Einstellungen
|
||||
- `GET /api/settings/:key` - Einstellung abrufen
|
||||
- `POST /api/settings` - Einstellung speichern (key, value)
|
||||
- `GET /api/settings` - Alle Einstellungen abrufen
|
||||
|
||||
## Installation & Ausführung
|
||||
|
||||
@@ -144,13 +197,32 @@ http://localhost:3000
|
||||
|
||||
## CSV-Export-Format
|
||||
|
||||
Die exportierte CSV-Datei enthält folgende Spalten:
|
||||
- **Datum**: Datum im Format TT.MM.JJJJ
|
||||
- **Startzeit**: Startzeit im Format HH:MM
|
||||
- **Endzeit**: Endzeit im Format HH:MM
|
||||
- **Pause in Minuten**: Pausenzeit in Minuten
|
||||
Die Anwendung bietet zwei Export-Optionen:
|
||||
|
||||
### 1. Vollständiger Export (📥 Button)
|
||||
Exportiert alle Einträge im gewählten Zeitraum (oder alle, wenn kein Filter gesetzt).
|
||||
|
||||
### 2. Export nur Abweichungen (⚠️ Button)
|
||||
Exportiert **nur** Tage, die von der Standard-Arbeitszeit (8,0 Stunden) abweichen.
|
||||
- **Zweck**: Ideal für Arbeitszeitnachweise bei Gleitzeit-Modellen
|
||||
- **Inhalt**: Nur Über- und Unterschreitungen der 8-Stunden-Marke
|
||||
- **Vorteil**: Übersichtlicher Nachweis für HR/Verwaltung ohne irrelevante Standard-Tage
|
||||
|
||||
### CSV-Spalten:
|
||||
- **Datum**: TT.MM.JJJJ (z.B. 23.10.2025)
|
||||
- **Startzeit**: HH:MM (z.B. 08:00)
|
||||
- **Endzeit**: HH:MM (z.B. 17:00)
|
||||
- **Pause in Minuten**: Ganzzahl (z.B. 30)
|
||||
- **Gesamtstunden**: Nettostunden mit Komma als Dezimaltrennzeichen (z.B. 8,50)
|
||||
|
||||
**Beispiel Abweichungs-Export:**
|
||||
```csv
|
||||
Datum,Startzeit,Endzeit,Pause in Minuten,Gesamtstunden
|
||||
21.10.2025,08:00,18:30,45,9,75
|
||||
22.10.2025,09:00,15:30,30,6,00
|
||||
```
|
||||
(Tage mit exakt 8,0h werden nicht exportiert)
|
||||
|
||||
## Entwicklung
|
||||
|
||||
Die Anwendung verwendet:
|
||||
|
||||
Reference in New Issue
Block a user