diff --git a/README.md b/README.md index b07831e..134a217 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,8 @@ Eine Full-Stack-Zeiterfassungsanwendung, entwickelt mit Node.js, Express, SQLite ### 🎨 Modernes UI/UX - **Premium Design**: Glass-Morphism, Gradients, Schatten, Animationen - **Responsive**: Desktop, Tablet, Mobile + - Timer-Metriken: Rechts neben Timer auf großen Displays, darunter auf mobil + - Adaptive Layouts für alle Bildschirmgrößen - **Dark Mode**: Augenschonendes dunkles Design - **Toast-Benachrichtigungen**: Visuelles Feedback - **Icons**: Lucide Icons für klare Symbolik @@ -134,7 +136,7 @@ Eine Full-Stack-Zeiterfassungsanwendung, entwickelt mit Node.js, Express, SQLite ## 🏗️ Technologie-Stack **Backend:** -- Node.js 18+ mit Express.js +- Node.js 20+ mit Express.js - SQLite (better-sqlite3) für dateibasierte Persistenz - Modulare Architektur (config, utils, routes) @@ -148,6 +150,8 @@ Eine Full-Stack-Zeiterfassungsanwendung, entwickelt mit Node.js, Express, SQLite **Infrastructure:** - Docker & Docker Compose - Multi-Stage Build für optimierte Images +- Node.js 20 Alpine Linux base image +- Python build dependencies für native Module - Gitea Actions CI/CD für automatische Builds - Gitea Container Registry für Image-Hosting @@ -163,15 +167,16 @@ timetracker/ │ ├── index.html # Single-Page Application │ ├── favicon.svg # App Icon │ └── js/ -│ ├── state.js # Globaler State +│ ├── state.js # Globaler State (companyHolidayPreference, targetHours) │ ├── utils.js # Hilfsfunktionen -│ ├── holidays.js # Feiertagsberechnung +│ ├── holidays.js # Feiertagsberechnung (16 Bundesländer) +│ ├── bridge-days.js # Brückentag-Optimierung │ ├── api.js # Backend-Kommunikation -│ └── main.js # Hauptlogik (~3700 Zeilen) +│ └── main.js # Hauptlogik (~4000 Zeilen) ├── .gitea/workflows/ # CI/CD Workflows │ └── docker-build.yml # Docker Build & Push ├── media/screenshots/ # App-Screenshots -├── Dockerfile # Container-Image +├── Dockerfile # Container-Image (Node 20 + Python) ├── docker-compose.yml # Orchestrierung └── package.json ``` @@ -248,7 +253,7 @@ docker run -p 3000:3000 -v $(pwd)/db:/app/db zeiterfassung ### 💻 Option 3: Lokal (ohne Docker) -**Voraussetzungen:** Node.js 18+ +**Voraussetzungen:** Node.js 20+ ```bash # Repository klonen @@ -268,6 +273,9 @@ Die App bietet mehrere Export-Modi für verschiedene Anwendungsfälle: ### PDF-Export 📄 **Monats-Export:** +- Button erscheint nur wenn letzter Tag des Monats vollständig erfasst ist + - Startzeit und Endzeit müssen vorhanden sein + - Verhindert versehentliche Exports unvollständiger Monate - Klicke auf "PDF Export" in der Monatsansicht - Exportiert alle Einträge des aktuellen Monats - Professionelles Layout mit: @@ -383,13 +391,14 @@ Die App verwendet Gitea Actions für automatische Builds und Deployments: **Architektur:** Single-Page Application (SPA) mit REST-API Backend **Tech-Details:** -- Modulare Frontend-Architektur (5 separate JS-Dateien) +- Modulare Frontend-Architektur (6 separate JS-Dateien) - Flatpickr für Touch-optimierte Picker (auch in Tabellen-Inline-Edit) - Lucide Icons für Symbolik - jsPDF + autoTable für PDF-Generierung - SQLite für dateibasierte Persistenz - Server-seitige Berechnungen für Datenintegrität - Responsive Design (Tailwind CSS via CDN) +- Live-Updates während Timer läuft (Saldo, Nettostunden) **Datenpersistenz:** - SQLite-Datenbank: `db/timetracker.db` @@ -398,11 +407,20 @@ Die App verwendet Gitea Actions für automatische Builds und Deployments: - JSON-basierte Backups für Migration **Code-Organisation:** -- `state.js`: Globaler Application State +- `state.js`: Globaler Application State (companyHolidayPreference, targetHours) - `utils.js`: Hilfsfunktionen (Datum, Zeit, Format) -- `holidays.js`: Feiertagsberechnung (16 Bundesländer) +- `holidays.js`: Feiertagsberechnung (16 Bundesländer + Betriebsfrei) +- `bridge-days.js`: Brückentag-Optimierung - `api.js`: Backend-Kommunikation -- `main.js`: Hauptlogik, UI, Event-Handler +- `main.js`: Hauptlogik, UI, Event-Handler (~4000 Zeilen) + +**Neue Features:** +- Timer-Metriken mit Live-Berechnung +- Anpassbare tägliche Arbeitszeit (4h-10h) +- Laufendes Saldo in Tabelle +- Intelligente PDF-Export-Aktivierung +- Betriebsfreier Tag (Weihnachten/Silvester) +- Responsive Timer-Layout ## 📄 Lizenz