Für die Arbeit
Clok
Arbeitszeiterfassung nach deutschem Recht.
Zeiterfassungs-Tools gibt es viele — aber kaum eines nimmt das deutsche Arbeitszeitgesetz ernst. Ich wollte eines, das nicht nur Stunden zählt, sondern beim Erfassen sofort meldet, wenn ein Eintrag gegen das ArbZG verstößt.
Clok ist für kleine Teams gebaut: Arbeitgeber verwalten ihre Leute, Mitarbeiter erfassen sich selbst — manuell und auch nachträglich, ganz ohne Stoppuhr-Zwang.
Was es kann
- ArbZG-Prüfung in Echtzeit: 8-Stunden-Tag (10 h hart), Pflichtpause ab 30 bzw. 45 Minuten, 11 Stunden Ruhezeit, 48-Stunden-Woche
- Manuelle Erfassung mit Start, Ende, Pause, Projekt und Notiz — auch rückwirkend
- Zwei Abrechnungsmodelle pro Person: Stundensatz oder Soll-Stunden pro Monat
- Urlaub und Krankheit mit Genehmigungs-Flow; Krankmeldung durch dich selbst oder als Vertretungsfall durch den Arbeitgeber
- Mindesturlaub nach BUrlG § 3 wird automatisch berechnet und als Untergrenze erzwungen
- Feiertage für alle 16 Bundesländer, farbig in Wochen- und Monatsansicht
- Self-Service-Onboarding: der Arbeitgeber legt nur Vertragsdaten an, Passwort und Stammdaten setzt du selbst per Einladungslink
- CSV-Import historischer Zeiten und Abwesenheiten, Monats-CSV-Export als DATEV-Vorbereitung
- Audit-Log für Zeiten, Abwesenheiten und Vertragsdaten; Offboarding ohne Datenverlust
- E-Mails über Resend, pro Person und Typ abschaltbar — ohne API-Key landen Mails nur im Log
Drei Rollen, klare Grenzen
Admins verwalten das System und laden Arbeitgeber ein. Arbeitgeber sehen ausschließlich die eigenen Mitarbeiter: Verträge, Anträge und ein Dashboard mit Soll/Ist, Saldo, Urlaubsstand und Krankheitstagen. Mitarbeiter erfassen nur sich selbst.
Das Frontend ist entlang dieser Rollen geroutet und abgesichert — jede Sicht bekommt genau das, was sie braucht, und nichts darüber hinaus.
Selbst hosten
Dein Server, deine Daten.
Das brauchst du
- Ein Host mit Docker und Docker Compose — PostgreSQL 16 kommt als Container mit, du brauchst keinen eigenen Datenbank-Server
- Ein SECRET_KEY für JWT (openssl rand -hex 32)
- Optional ein Resend-Account mit verifizierter Absender-Domain für echten Mailversand — ohne Key läuft Clok im Log-Modus und funktioniert trotzdem
So läuft es an
- 1
Konfigurieren
In der .env mindestens SECRET_KEY und das Postgres-Passwort setzen; Resend-Werte nur, wenn Mails wirklich raus sollen.
git clone https://github.com/laarsv/Clok.git && cd Clok cp .env.example .env
- 2
Starten
Die Datenbank-Migrationen laufen beim Start des Backends automatisch.
docker compose up -d --build
- 3
Ersten Admin anlegen
docker compose exec backend python -m app.cli bootstrap-admin \ --username lars --email lars@example.com --password '…'
- 4
Reverse-Proxy davorsetzen
Die Container veröffentlichen keine Host-Ports. Dein Proxy (Caddy, NPM, Traefik) zeigt auf den Frontend-Container, Port 80.
Steckbrief
- Stack
- FastAPI · PostgreSQL 16 · React + Vite + TypeScript
- Resend mit Jinja2-Templates — optional
- Lizenz
- AGPL-3.0