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:
145
backend/README.md
Normal file
145
backend/README.md
Normal file
@@ -0,0 +1,145 @@
|
||||
# TimeClock Backend API v3.0
|
||||
|
||||
Node.js/Express Backend für die TimeClock Zeiterfassungsanwendung.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Erstellen Sie eine `.env` Datei im Backend-Verzeichnis:
|
||||
|
||||
```env
|
||||
PORT=3000
|
||||
NODE_ENV=development
|
||||
```
|
||||
|
||||
## Starten
|
||||
|
||||
### Entwicklung (mit Auto-Reload)
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Produktion
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
## API-Dokumentation
|
||||
|
||||
### Base URL
|
||||
```
|
||||
http://localhost:3010/api
|
||||
```
|
||||
|
||||
### Endpunkte
|
||||
|
||||
#### Health Check
|
||||
```
|
||||
GET /api/health
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"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:**
|
||||
```json
|
||||
{
|
||||
"totalEntries": 10,
|
||||
"completedEntries": 8,
|
||||
"runningEntries": 2,
|
||||
"totalHours": "42.50",
|
||||
"totalSeconds": 153000,
|
||||
"projectStats": {
|
||||
"Projekt A": {
|
||||
"duration": 86400,
|
||||
"count": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Datenmodell
|
||||
|
||||
### TimeEntry
|
||||
|
||||
```javascript
|
||||
{
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user