Moderne, schlanke und selbst gehostete Zeiterfassung für Teams und Einzelpersonen.
Timeslot ist eine webbasierte Zeiterfassungssoftware für die einfache Verwaltung von Arbeitszeiten, Urlaub, Krankheit, Feiertagen und Homeoffice.
Die Anwendung lässt sich unkompliziert self-hosted mit Docker betreiben und benötigt standardmäßig keine externe Datenbank. Für größere Installationen kann alternativ MySQL verwendet werden.
- 🔐 Login mit Standard-Administrator
admin/admin - 🔑 Passwortänderung beim ersten Login wird erzwungen
- 👥 Benutzerverwaltung für Administratoren
- ➕ Benutzer anlegen
- 🔑 Automatische Generierung eines vorgeschlagenen Passworts
- 🛡️ Rollenverwaltung: Administrator / Benutzer
- 🗑️ Benutzer löschen
- 🔄 Passwörter zurücksetzen
- ✏️ Benutzer können ihr eigenes Passwort jederzeit ändern
Jeder Benutzer kann seine persönlichen Arbeitsbedingungen konfigurieren:
- 🏖️ Jährliche Urlaubstage
- ⏰ Tägliche Soll-Arbeitszeit
- 📅 Samstag als Arbeitstag aktivieren/deaktivieren
- 📅 Sonntag als Arbeitstag aktivieren/deaktivieren
- 📧 Eigene E-Mail-Adresse hinterlegen oder entfernen
Die E-Mail-Adresse kann unabhängig von einer eventuellen Einstellungs-Sperre jederzeit vom Benutzer geändert werden.
Der Kalender bildet die zentrale Startseite von Timeslot.
- Monats- und Wochenansicht
- Navigation in die Vergangenheit und Zukunft
- Tagesdetails über ein übersichtliches Modal
- Urlaub buchen und stornieren
- Feiertage verwalten
- Gleittage verwalten
- Krankmeldungen verwalten
- Zeiträume über Von / Bis erfassen
- Bereits vorhandene Einträge werden nicht überschrieben
- Nicht als Arbeitstage konfigurierte Wochenenden werden automatisch übersprungen
Direkt im Tagesdialog werden alle Stempelungen des jeweiligen Tages angezeigt.
Stempelungen können:
- ➕ hinzugefügt
- ✏️ bearbeitet
- 🗑️ gelöscht
werden.
Damit lassen sich beispielsweise vergessene Ausstempelungen problemlos nachtragen.
Unterstützt werden:
- 🏢 Büro Beginn
- 🏢 Büro Ende
- 🏠 Homeoffice Beginn
- 🏠 Homeoffice Ende
Ungültige Kombinationen werden serverseitig verhindert. Beispielsweise kann Homeoffice nicht beendet werden, während gleichzeitig eine aktive Büro-Stempelung besteht.
Timeslot berechnet automatisch die wichtigsten Kennzahlen:
- Gesamt-Saldo
- Soll-Arbeitszeit
- Ist-Arbeitszeit
- Verfügbarer Urlaub
- Voraussichtlich am 31.12. verfügbarer Urlaub
Die Berechnung von Sollzeit, Istzeit und Saldo beginnt erst ab dem Erstellungsdatum des jeweiligen Benutzerkontos.
Der Kalender stellt verschiedene Buchungen übersichtlich dar.
Stempelungen werden zusätzlich mit Punkten gekennzeichnet:
- 🔵 Blauer Punkt → Büro
- 🟠 Oranger Punkt → Homeoffice
Urlaub, Feiertage, Gleittage und Krankheit werden entsprechend ihrer jeweiligen Buchung im Kalender dargestellt.
Administratoren können SMTP direkt über die Timeslot-Oberfläche konfigurieren.
Unter SMTP lassen sich unter anderem einstellen:
- Mailserver
- Port
- Verschlüsselung
- Authentifizierung
- Unverschlüsselte SMTP-Verbindungen, z. B. Port 25 ohne Authentifizierung
Eine Test-Mail kann direkt aus der Anwendung an eine beliebige Adresse verschickt werden.
Am 1. jedes Monats wird automatisch das Excel-Journal des Vormonats an alle Benutzer verschickt, die eine E-Mail-Adresse hinterlegt haben.
Betreff: Monatsjournal
Der Versand ist für größere Benutzerzahlen ausgelegt:
- ♻️ Wiederverwendete SMTP-Verbindung
- 📦 SMTP-Verbindung wird gepoolt
- 🚦 Begrenzte Parallelität von maximal 3 Benutzern
- 🛡️ Fehler bei einzelnen Empfängern stoppen nicht den gesamten Versand
Die Monatsübersicht kann als Excel-Datei exportiert werden.
Der Export enthält unter anderem:
- Arbeitszeiten
- Abwesenheiten
- Salden
- Monatsübersicht
- Projekt-/Unternehmenslogo
Während der Erstellung wird eine Ladeanimation mit abgedunkeltem Hintergrund angezeigt.
Timeslot wurde für einen einfachen Self-Hosted-Betrieb mit Docker entwickelt.
docker compose up --buildAnschließend ist Timeslot unter
http://localhost:3000
erreichbar.
Standard-Login:
Benutzer: admin
Passwort: admin
Beim ersten Login muss das Passwort geändert werden.
Standardmäßig verwendet Timeslot SQLite.
Die Daten werden im Docker-Volume
timeslot_data
gespeichert.
Für Installationen mit MySQL kann die Datenbank über Umgebungsvariablen konfiguriert werden.
DB_TYPE=mysql
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_DATABASE=timeslot
MYSQL_USER=timeslot
MYSQL_PASSWORD=timeslotEin Beispiel für einen MySQL-Service ist bereits in der docker-compose.yml enthalten und kann dort aktiviert werden.
docker build -t timeslot:latest .Container starten:
docker run \
-p 3000:3000 \
-v timeslot_data:/app/data \
timeslot:latestTimeslot kann auch ohne Docker ausgeführt werden.
Voraussetzung: Node.js 18+
npm install
npm startOhne konfigurierte MySQL-Umgebungsvariablen wird automatisch SQLite verwendet.
Die Datenbank befindet sich anschließend unter:
./data/timeslot.sqlite
Für den produktiven Betrieb sollten unbedingt eigene Secrets verwendet werden.
Setze insbesondere:
JWT_SECRET=<zufälliger-geheimer-wert>Außerdem sollte das Standard-Administratorpasswort unmittelbar geändert werden.
Die Passwortänderung wird beim ersten Login automatisch erzwungen.
Das fertige Docker-Image findest du hier:
Made with ❤️ by Raphael & Claude for simple, self-hosted time tracking.