Timer-App unter Versionsverwaltung stellen

Stand der laufenden Anwendung von 192.168.1.5:/opt/timer-app (systemd-Dienst
timer-app, Port 3003). Zeiterfassung mit Kostenberechnung: Node/Express,
SQLite, Anmeldung ausschliesslich ueber Authentik (OIDC, PKCE, RP-Logout) -
der frueher vorhandene Passwort-Login ist entfernt.

Nicht im Repo, bewusst:
- backend/.env und die .env-Sicherung: enthalten Session-Secret und die
  Authentik-Zugangsdaten. Vorlage ist backend/.env.example.
- data/: die Datenbank mit den echten Zeiterfassungen.
- node_modules/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-04 17:47:07 +02:00
co-authored by Claude Opus 5
commit a7e77793a8
16 changed files with 5192 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
# Timer — Zeiterfassung
Zeiterfassung mit automatischer Kostenberechnung für den Einsatz im Laden.
> **Installation und Technik:** siehe [DEPLOY.md](DEPLOY.md).
> Diese Datei ist die Kurzanleitung für die tägliche Bedienung.
---
## Anmelden
Seite im Browser öffnen, Passwort eingeben. Die Anmeldung gilt 24 Stunden und
verlängert sich bei Benutzung — ein Tablet am Tresen muss also nicht täglich neu
angemeldet werden.
## Timer starten
Oben optional einen Namen eintippen — zum Beispiel „Tisch 2", „Herr Müller" oder
„Reparatur Werkbank" — und auf **▶ Neuer Timer** klicken.
Es können **beliebig viele Timer gleichzeitig** laufen, einer je Platz oder Kunde.
Jeder bekommt eine eigene Karte mit Zeit und laufendem Betrag. Der Name lässt
sich jederzeit nachträglich ändern, einfach im Feld überschreiben.
## Während der Timer läuft
| Knopf | Wirkung |
|---|---|
| **❚❚ Pause** | Zeit anhalten, Betrag friert ein |
| **▶ Weiter** | pausierten Timer fortsetzen |
| **✓ Beenden** | Vorgang abschließen und in der Historie speichern |
| **✕ Verwerfen** | Timer wegwerfen, **nichts** wird gespeichert |
Vor dem Beenden und dem Verwerfen kommt eine Rückfrage mit Zeit und Betrag.
### Was passiert, wenn …
* **… der Browser geschlossen wird?** Nichts. Der Timer läuft auf dem Server
weiter und ist beim nächsten Öffnen wieder da.
* **… das Tablet neu startet?** Ebenfalls nichts — einfach wieder aufrufen.
* **… ein Kollege am zweiten Gerät nachschaut?** Er sieht dieselben Timer live.
* **… über Nacht vergessen wurde zu stoppen?** Der Timer zählt weiter, wie eine
Wanduhr. Die Karte zeigt, seit wann er läuft. Wer die Zeit korrigieren will,
verwirft den Timer und erfasst ihn neu.
## Historie
Unter **📊 Historie** stehen alle abgeschlossenen Vorgänge mit Datum, Name,
Dauer und Betrag. Oben summieren drei Kacheln den gewählten Zeitraum.
* Filter nach **Von/Bis-Datum** und nach **Name**
* Schnellauswahl **Heute** und **Dieser Monat**
* **⬇ CSV-Export** lädt genau die gefilterte Auswahl herunter — die Datei lässt
sich direkt in Excel öffnen, Umlaute und Beträge stimmen
* Das **🗑**-Symbol löscht einen Eintrag endgültig (mit Rückfrage)
## Einstellungen
Unter **⚙️ Einstellungen** wird der Tarif festgelegt: Betrag und Intervall,
zum Beispiel „10 € pro 10 Minuten". Die Vorschau rechnet Beispiele durch.
Wichtig zu wissen:
* **Jede angefangene Einheit wird voll berechnet.** 10 Minuten und 1 Sekunde
kosten bei einem 10-Minuten-Takt bereits zwei Einheiten.
* Der Tarif gilt für **alle Geräte gemeinsam**.
* Eine Änderung wirkt sofort auf laufende und neue Timer. Bereits gespeicherte
Einträge in der Historie behalten den Tarif, der beim Beenden galt.
## Abmelden
**🚪 Abmelden** meldet nur dieses Gerät ab. Laufende Timer bleiben davon
unberührt und laufen weiter.