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
2.1 KiB
2.1 KiB
TimeClock Backend API v3.0
Node.js/Express Backend für die TimeClock Zeiterfassungsanwendung.
Installation
npm install
Konfiguration
Erstellen Sie eine .env Datei im Backend-Verzeichnis:
PORT=3000
NODE_ENV=development
Starten
Entwicklung (mit Auto-Reload)
npm run dev
Produktion
npm start
API-Dokumentation
Base URL
http://localhost:3010/api
Endpunkte
Health Check
GET /api/health
Response:
{
"status": "ok",
"message": "TimeClock API v3.0.0",
"timestamp": "2025-10-15T10:00:00.000Z"
}
Alle Zeiteinträge abrufen
GET /api/time-entries
Einzelnen Zeiteintrag abrufen
GET /api/time-entries/:id
Neuen Zeiteintrag erstellen
POST /api/time-entries
Content-Type: application/json
{
"project": "Mein Projekt",
"description": "Beschreibung"
}
Zeiteintrag aktualisieren
PUT /api/time-entries/:id
Content-Type: application/json
{
"endTime": "2025-10-15T10:30:00.000Z",
"description": "Aktualisierte Beschreibung"
}
Zeiteintrag löschen
DELETE /api/time-entries/:id
Statistiken abrufen
GET /api/time-entries/stats/summary
Response:
{
"totalEntries": 10,
"completedEntries": 8,
"runningEntries": 2,
"totalHours": "42.50",
"totalSeconds": 153000,
"projectStats": {
"Projekt A": {
"duration": 86400,
"count": 5
}
}
}
Datenmodell
TimeEntry
{
id: Number,
startTime: String (ISO 8601),
endTime: String (ISO 8601) | null,
description: String,
project: String,
duration: Number (Sekunden) | null,
isRunning: Boolean
}
Dependencies
- express - Web-Framework
- cors - CORS-Middleware
- helmet - Sicherheits-Middleware
- morgan - HTTP Request Logger
- dotenv - Environment Variables
Entwicklung
Der aktuelle Stand verwendet In-Memory-Speicher. Für eine Produktionsumgebung sollte eine Datenbank integriert werden:
- MongoDB mit mongoose
- PostgreSQL mit pg/sequelize
- MySQL mit mysql2/sequelize