Initial commit: TimeClock v3 - Node.js/Vue.js Zeiterfassung

Features:
- Backend: Node.js/Express mit MySQL/MariaDB
- Frontend: Vue.js 3 mit Composition API
- UTC-Zeithandling für korrekte Zeiterfassung
- Timewish-basierte Überstundenberechnung
- Wochenübersicht mit Urlaubs-/Krankheits-/Feiertagshandling
- Bereinigtes Arbeitsende (Generell/Woche)
- Überstunden-Offset für historische Daten
- Fixed Layout mit scrollbarem Content
- Kompakte UI mit grünem Theme
This commit is contained in:
Torsten Schulz (local)
2025-10-17 14:11:28 +02:00
commit e95bb4cb76
86 changed files with 19530 additions and 0 deletions

181
QUICKSTART.md Normal file
View File

@@ -0,0 +1,181 @@
# TimeClock - Schnellstart-Anleitung
## 🚀 In 5 Minuten zur laufenden Anwendung
### Schritt 1: MySQL Setup (Einmalig)
```bash
cd /home/torsten/Programs/TimeClock/backend
./setup-mysql.sh
```
**Das Script fragt:**
- MySQL Root-Passwort
- Gewünschter DB-Benutzer (Standard: `timeclock_user`)
- Gewünschtes Passwort (Standard: `timeclock_dev_2025`)
**Das Script erstellt:**
- ✅ Datenbank `stechuhr2`
- ✅ MySQL-Benutzer mit Berechtigungen
-`.env` Datei mit Credentials
---
### Schritt 2: Server starten
```bash
cd /home/torsten/Programs/TimeClock
npm run dev
```
**Erwartete Ausgabe:**
```
[0] ✅ Sequelize: MySQL-Datenbankverbindung hergestellt
[0] ✅ Sequelize: Models initialisiert
[0] 🕐 TimeClock Server läuft auf Port 3010
[1] ➜ Local: http://localhost:5010/
```
---
### Schritt 3: Ersten Account erstellen
1. Browser öffnen: **http://localhost:5010**
2. Klick auf **"Registrieren"**
3. Formular ausfüllen:
- Name: `Ihr Name`
- E-Mail: `ihre@email.de`
- Passwort: `minimum6zeichen`
4. **"Registrieren"** klicken
5. Zum **Login** weitergeleitet
6. Mit den Credentials einloggen
---
### Schritt 4: Timer starten
1. Im Dashboard:
- Projekt: `Mein erstes Projekt`
- Beschreibung: `Testing TimeClock`
2. **"Starten"** klicken
3. Timer läuft! ⏱️
4. **"Stoppen"** wenn fertig
---
## 🔧 Manuelle MySQL-Einrichtung
Falls Sie das Script nicht verwenden möchten:
### 1. MySQL einloggen
```bash
mysql -u root -p
```
### 2. Datenbank und Benutzer erstellen
```sql
CREATE DATABASE stechuhr2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'timeclock_user'@'localhost' IDENTIFIED BY 'IhrPasswort';
GRANT ALL PRIVILEGES ON stechuhr2.* TO 'timeclock_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
### 3. .env Datei bearbeiten
```bash
cd /home/torsten/Programs/TimeClock/backend
nano .env
```
Setzen Sie:
```env
DB_USER=timeclock_user
DB_PASSWORD=IhrPasswort
DB_NAME=stechuhr2
```
---
## 🆘 Troubleshooting
### "Access denied for user"
```bash
# Berechtigungen prüfen
mysql -u root -p
SHOW GRANTS FOR 'timeclock_user'@'localhost';
```
### "Can't connect to MySQL server"
```bash
# MySQL starten
sudo systemctl start mysql
sudo systemctl status mysql
```
### "Unknown database stechuhr2"
```bash
# Datenbank erstellen
mysql -u root -p
CREATE DATABASE stechuhr2;
```
### Port bereits belegt
```bash
# Ports prüfen
sudo ss -tlnp | grep -E "3010|5010"
# Prozesse beenden falls nötig
pkill -f "TimeClock"
```
---
## 📊 Features testen
### ✅ Registrierung & Login
- `/register` - Neuen Account erstellen
- `/login` - Einloggen
- Session bleibt nach Reload erhalten
### ✅ Timer-Funktionen
- Dashboard: Timer starten/stoppen
- Einträge: Alle Zeiteinträge anzeigen
- Statistiken: Auswertungen nach Projekt
### ✅ Passwort-Reset
- `/password-forgot` - E-Mail eingeben
- In DEV-Mode wird Reset-Token angezeigt
- `/password-reset?token=XXX` - Neues Passwort setzen
---
## 🎯 Nächste Schritte
1. **Mehrere Projekte** anlegen
2. **Statistiken** ansehen
3. **Passwort ändern** im Profil
4. **Weitere Benutzer** registrieren
---
## 📖 Weitere Dokumentation
- `README.md` - Vollständige Projektdokumentation
- `SETUP.md` - Detaillierte Setup-Anleitung
- `AUTH.md` - Authentifizierung & Session-Management
- `backend/MYSQL_SETUP.md` - MySQL-Detailanleitung
- `backend/DATABASE.md` - Datenbank-Schema
- `backend/ARCHITECTURE.md` - Backend-Architektur
---
## 🎉 Fertig!
Ihre TimeClock v3 Anwendung läuft jetzt auf:
- **Frontend:** http://localhost:5010
- **Backend API:** http://localhost:3010/api
Viel Erfolg mit der Zeiterfassung! 🕐