diff --git a/README.md b/README.md index fdce452..3e9eb10 100644 --- a/README.md +++ b/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