Update README.md for German localization and feature descriptions
This commit is contained in:
112
README.md
112
README.md
@@ -1,113 +1,113 @@
|
||||
# Zeiterfassung (Time Tracking Application)
|
||||
# Zeiterfassung
|
||||
|
||||
A full-stack time tracking application built with Node.js, Express, SQLite, and containerized with Docker.
|
||||
Eine Full-Stack-Zeiterfassungsanwendung, entwickelt mit Node.js, Express, SQLite und containerisiert mit Docker.
|
||||
|
||||
## Features
|
||||
## Funktionen
|
||||
|
||||
- ✅ Track work time entries (date, start time, end time)
|
||||
- ✅ Automatic break calculation according to German labor laws
|
||||
- ✅ Maximum 10-hour net time cap
|
||||
- ✅ Date range filtering
|
||||
- ✅ CSV export with German formatting
|
||||
- ✅ Responsive UI with Tailwind CSS
|
||||
- ✅ Modern date/time picker (Flatpickr)
|
||||
- ✅ Docker containerization
|
||||
- ✅ 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
|
||||
|
||||
## Technology Stack
|
||||
## Technologie-Stack
|
||||
|
||||
- **Backend**: Node.js, Express.js
|
||||
- **Database**: SQLite (better-sqlite3)
|
||||
- **Datenbank**: SQLite (better-sqlite3)
|
||||
- **Frontend**: Vanilla JavaScript, HTML, Tailwind CSS
|
||||
- **Containerization**: Docker
|
||||
- **Containerisierung**: Docker
|
||||
|
||||
## Project Structure
|
||||
## Projektstruktur
|
||||
|
||||
```
|
||||
/zeiterfassung
|
||||
├── public/
|
||||
│ ├── index.html # Main UI
|
||||
│ └── app.js # Frontend logic
|
||||
│ ├── index.html # Hauptbenutzeroberfläche
|
||||
│ └── app.js # Frontend-Logik
|
||||
├── db/
|
||||
│ └── schema.sql # Database schema
|
||||
├── server.js # Express server with API endpoints
|
||||
├── Dockerfile # Multi-stage Docker build
|
||||
│ └── schema.sql # Datenbankschema
|
||||
├── server.js # Express-Server mit API-Endpunkten
|
||||
├── Dockerfile # Multi-Stage Docker Build
|
||||
├── package.json
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## German Break Rules
|
||||
## Deutsche Pausenregelung
|
||||
|
||||
The application automatically calculates break times according to German labor law:
|
||||
- **> 6 hours worked**: 30 minutes break deducted
|
||||
- **> 9 hours worked**: 45 minutes break deducted
|
||||
- **Net hours capped at 10.0 hours maximum**
|
||||
Die Anwendung berechnet automatisch die Pausenzeiten gemäß deutschem Arbeitszeitgesetz:
|
||||
- **> 6 Stunden Arbeitszeit**: 30 Minuten Pause werden abgezogen
|
||||
- **> 9 Stunden Arbeitszeit**: 45 Minuten Pause werden abgezogen
|
||||
- **Nettostunden sind auf maximal 10,0 Stunden begrenzt**
|
||||
|
||||
## API Endpoints
|
||||
## API-Endpunkte
|
||||
|
||||
- `GET /api/entries?from=YYYY-MM-DD&to=YYYY-MM-DD` - Get all entries in date range
|
||||
- `POST /api/entries` - Create a new entry
|
||||
- `PUT /api/entries/:id` - Update an existing entry
|
||||
- `DELETE /api/entries/:id` - Delete an entry
|
||||
- `GET /api/export?from=YYYY-MM-DD&to=YYYY-MM-DD` - Export entries as CSV
|
||||
- `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
|
||||
|
||||
## Running Locally
|
||||
## Lokale Ausführung
|
||||
|
||||
### Prerequisites
|
||||
- Node.js 18+ installed
|
||||
### Voraussetzungen
|
||||
- Node.js 18+ installiert
|
||||
|
||||
### Installation
|
||||
|
||||
1. Install dependencies:
|
||||
1. Abhängigkeiten installieren:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
2. Start the server:
|
||||
2. Server starten:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
3. Open your browser and navigate to:
|
||||
3. Browser öffnen und navigieren zu:
|
||||
```
|
||||
http://localhost:3000
|
||||
```
|
||||
|
||||
## Running with Docker
|
||||
## Ausführung mit Docker
|
||||
|
||||
### Build the Docker image:
|
||||
### Docker-Image erstellen:
|
||||
```bash
|
||||
docker build -t zeiterfassung .
|
||||
```
|
||||
|
||||
### Run the container:
|
||||
### Container starten:
|
||||
```bash
|
||||
docker run -p 3000:3000 -v $(pwd)/db:/app/db zeiterfassung
|
||||
```
|
||||
|
||||
The `-v` flag mounts the database directory to persist data between container restarts.
|
||||
Das `-v` Flag bindet das Datenbankverzeichnis ein, um Daten zwischen Container-Neustarts zu erhalten.
|
||||
|
||||
### Access the application:
|
||||
### Anwendung aufrufen:
|
||||
```
|
||||
http://localhost:3000
|
||||
```
|
||||
|
||||
## CSV Export Format
|
||||
## CSV-Export-Format
|
||||
|
||||
The exported CSV file includes the following columns:
|
||||
- **Datum**: Date in DD.MM.YYYY format
|
||||
- **Startzeit**: Start time in HH:MM format
|
||||
- **Endzeit**: End time in HH:MM format
|
||||
- **Pause in Minuten**: Break time in minutes
|
||||
- **Gesamtstunden**: Net hours with comma as decimal separator (e.g., 8,50)
|
||||
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
|
||||
- **Gesamtstunden**: Nettostunden mit Komma als Dezimaltrennzeichen (z.B. 8,50)
|
||||
|
||||
## Development
|
||||
## Entwicklung
|
||||
|
||||
The application uses:
|
||||
- **Flatpickr** for date and time selection with mobile-friendly interfaces
|
||||
- **Tailwind CSS** for styling (loaded via CDN)
|
||||
- **SQLite** for lightweight, file-based data persistence
|
||||
- All calculations are performed server-side for data integrity
|
||||
Die Anwendung verwendet:
|
||||
- **Flatpickr** für die Datums- und Zeitauswahl mit mobilfreundlichen Oberflächen
|
||||
- **Tailwind CSS** für das Styling (geladen über CDN)
|
||||
- **SQLite** für leichtgewichtige, dateibasierte Datenpersistenz
|
||||
- Alle Berechnungen werden serverseitig durchgeführt, um die Datenintegrität zu gewährleisten
|
||||
|
||||
## License
|
||||
## Lizenz
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user