Initiale Arbeitszeiterfassung (Next.js 16 + SQLite)

Web-App zur Erfassung der Arbeitszeit, Layout/Architektur an Projekt logbuch
angelehnt, mit grüner Grundfarbe und SQLite3 statt MySQL.

- Eingabemaske: Datum (mit Wochentag), Ort (Kunde FFM/Homeoffice/Andrena),
  Beginn/Ende, Reisezeit, Vertriebsunterstützung (default 2h), Kommentar (max 500)
- Berechnung: Arbeitszeit = Ende-Beginn; Mehrarbeit = Arbeitszeit - 8h - Pause
- Pause als globale Einstellung (Einstellungen-Tab)
- Tabs Eingabe/Liste/Einstellungen, letzte 10 Einträge unter der Maske
- Single-User-Login (Benutzer Birgit + Passwort fest in .env), JWT-Cookie via jose
- better-sqlite3, Docker-Setup für docker.citysensor.de

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-22 09:53:44 +02:00
commit 01a7ac8e0b
38 changed files with 9062 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
export const ORTE = ['Kunde FFM', 'Homeoffice', 'Andrena'] as const;
export type Ort = (typeof ORTE)[number];
// Fixe Arbeitszeit beim Kunden (Stunden) — feste Spalte in der Liste.
export const ARBEITSZEIT_KUNDE_FIX = 8;
export interface ArbeitszeitEintrag {
id: number;
datum: string; // YYYY-MM-DD
ort: Ort;
beginn: string; // HH:MM
ende: string; // HH:MM
reisezeit: number; // dezimale Stunden
vertriebsunterstuetzung: number; // dezimale Stunden
kommentar: string;
created_at: string;
}
// Eingabe-/Update-Nutzlast (ohne id/created_at)
export type ArbeitszeitInput = Omit<ArbeitszeitEintrag, 'id' | 'created_at'>;