# TimeClock v3.0 🕐 Eine moderne Full-Stack-Zeiterfassungsanwendung mit Node.js und Vue 3. ## Features - ⏱️ **Echtzeit-Zeiterfassung** - Starten und stoppen Sie Timer mit einem Klick - 📊 **Detaillierte Statistiken** - Verfolgen Sie Ihre Zeit nach Projekten - 💼 **Projekt-Management** - Organisieren Sie Ihre Zeiteinträge nach Projekten - 🎨 **Moderne UI** - Schöne und intuitive Benutzeroberfläche - 📱 **Responsive Design** - Funktioniert auf Desktop und Mobile ## Technologie-Stack ### Backend - **Node.js** mit Express.js - **MySQL-Datenbank** (stechuhr2) - RESTful API mit klassenbasierter Architektur - Repository-Pattern für saubere Datenbankabstraktion - Service-Layer für Business-Logik - CORS & Helmet für Sicherheit - Morgan für Logging ### Frontend - **Vue 3** mit Composition API - **Vite** als Build-Tool - **Vue Router** für Navigation - **Pinia** für State Management - Moderne CSS mit Gradients ## Installation ### Voraussetzungen - Node.js (v16 oder höher) - npm oder yarn ### Backend Setup ```bash cd backend npm install # .env Datei erstellen und konfigurieren cp .env.example .env # Bearbeiten Sie .env mit Ihren MySQL-Zugangsdaten npm run dev ``` Der Backend-Server läuft standardmäßig auf `http://localhost:3010` **Wichtig:** Siehe `backend/DB_SETUP.md` für detaillierte Datenbank-Konfiguration! ### Frontend Setup ```bash cd frontend npm install npm run dev ``` Das Frontend läuft standardmäßig auf `http://localhost:5010` ## Verwendung 1. Starten Sie zuerst den Backend-Server 2. Starten Sie dann den Frontend-Development-Server 3. Öffnen Sie `http://localhost:5010` in Ihrem Browser ### Dashboard - Starten Sie einen neuen Timer mit Projekt und Beschreibung - Sehen Sie die aktuelle Laufzeit in Echtzeit - Stoppen Sie den Timer, wenn Sie fertig sind - Sehen Sie Ihre letzten 5 Einträge ### Einträge - Vollständige Liste aller Zeiteinträge - Filtern nach Status (laufend/beendet) - Löschen von Einträgen ### Statistiken - Gesamtanzahl der Einträge - Gesamtarbeitsstunden - Aufschlüsselung nach Projekten - Detaillierte Projekt-Statistiken ## API-Endpunkte ### GET /api/health Health-Check des Servers ### GET /api/time-entries Alle Zeiteinträge abrufen ### POST /api/time-entries Neuen Zeiteintrag erstellen (Timer starten) ```json { "project": "Projektname", "description": "Beschreibung der Tätigkeit" } ``` ### PUT /api/time-entries/:id Zeiteintrag aktualisieren (Timer stoppen) ```json { "endTime": "2025-10-15T10:30:00.000Z" } ``` ### DELETE /api/time-entries/:id Zeiteintrag löschen ### GET /api/time-entries/stats/summary Statistiken abrufen ## Projektstruktur ``` TimeClock/ ├── backend/ │ ├── src/ │ │ ├── config/ │ │ │ └── database.js │ │ ├── controllers/ │ │ │ └── TimeEntryController.js │ │ ├── services/ │ │ │ └── TimeEntryService.js │ │ ├── repositories/ │ │ │ ├── WorklogRepository.js │ │ │ └── UserRepository.js │ │ ├── models/ │ │ │ └── TimeEntry.js │ │ ├── routes/ │ │ │ └── timeEntries.js │ │ └── index.js │ ├── ARCHITECTURE.md │ ├── DATABASE.md │ ├── DB_SETUP.md │ └── package.json │ └── frontend/ ├── src/ │ ├── assets/ │ │ └── main.css │ ├── components/ │ ├── router/ │ │ └── index.js │ ├── stores/ │ │ └── timeStore.js │ ├── views/ │ │ ├── Dashboard.vue │ │ ├── Entries.vue │ │ └── Stats.vue │ ├── App.vue │ └── main.js ├── index.html ├── package.json └── vite.config.js ``` ## Entwicklung ### Backend-Entwicklung ```bash cd backend npm run dev # Startet mit nodemon für Auto-Reload ``` ### Frontend-Entwicklung ```bash cd frontend npm run dev # Startet Vite Dev-Server mit HMR ``` ### Build für Produktion **Frontend:** ```bash cd frontend npm run build ``` Die Build-Dateien befinden sich dann im `dist/` Ordner. ## Implementierte Features - ✅ **MySQL-Datenbank** - Integration mit bestehender stechuhr2-Datenbank - ✅ **Repository-Pattern** - Saubere Datenbankabstraktion - ✅ **Service-Layer** - Klare Trennung von Business-Logik - ✅ **Klassenbasierte Architektur** - Controller und Services als Klassen ## Geplante Erweiterungen - 👤 **Benutzer-Authentifizierung** - JWT-basiertes Login-System - 🔐 **Multi-User Support** - Mehrere Benutzer mit Berechtigungen - 📧 **E-Mail-Berichte** - Automatische Zeitberichte per E-Mail - 📱 **Mobile App** - React Native oder Flutter App - 📈 **Erweiterte Analytics** - Grafiken und Diagramme - 🌐 **Mehrsprachigkeit** - i18n Integration - 🔔 **Benachrichtigungen** - Push-Notifications - 📤 **Export-Funktionen** - CSV, PDF Export ## Lizenz ISC ## Autor TimeClock v3 - 2025 ## Support Bei Fragen oder Problemen öffnen Sie bitte ein Issue im Repository.