MATTES.DEV

← Blog

· 4 Min. Lesezeit

Clessira: eine local-first Zeiterfassung für macOS

Zeiterfassungen fallen im Wesentlichen in zwei Kategorien: schlanke Timer mit wenig Auswertung dahinter, oder Produkte, deren Auswertungstiefe an ein gehostetes Backend gebunden ist, in den Team-Varianten zusätzlich an die Einsehbarkeit durch Dritte. Clessira ist mein Versuch, die Auswertungstiefe der zweiten Kategorie unter das Speichermodell der ersten zu bringen: eine Zeiterfassung für macOS, iOS und iPadOS, die ihre Daten in einer lokalen Datei hält, weder Konto noch serverseitige Komponente benötigt und als Einmalkauf verkauft wird.

Leerlauferkennung und Rückfragen

Das praktische Problem bei stundenweiser Abrechnung ist nicht das Erfassen eines Intervalls, sondern daran zu denken, es zu starten. Clessira erkennt Leerlauflücken und klassifiziert sie anhand früherer Einträge im selben Kontext. Ist die Zuordnung eindeutig, wird die Lücke automatisch zugewiesen; andernfalls bietet eine Rückfrage die wahrscheinlichsten Aktivitäten auf den Zifferntasten 1 bis 3 an, sodass ein vollständiger Eintrag einen Tastendruck kostet. Rückfragen unterbleiben, solange ein Fokus-Modus von macOS aktiv ist, was Präsentationen und vergleichbare Situationen abdeckt. Pausen sind eine reguläre Kategorie, Lücken müssen also nicht begründet werden. Die Anwendung protokolliert nicht, welche Programme im Vordergrund laufen, und führt keine Serien- oder Vollständigkeitsmetrik.

Auswertung

Die Auswertung umfasst Ansichten für Tag, Woche, Monat und freien Zeitraum, eine Statistik sowie eine Pivot-Tabelle, die Aktivitäten als Matrix gegen Wochentage abbildet — die Form, die für einen Wochenrückblick oder eine Monatsrechnung üblicherweise gebraucht wird. Ein exakter Modus rechnet minutengenau statt auf gerundete Intervalle. Jeder Eintrag trägt ein Notizfeld, und die Notizen werden von Spotlight indexiert, sodass sich ein Eintrag später über seinen Inhalt und nicht nur über sein Datum finden lässt.

Entwicklungs-Workflow

Einen Aktivitätenkatalog für einen Sprint aufzusetzen bedeutet sonst, Ticket-Titel abzutippen. Clessira nimmt eine eingefügte Jira-Liste, Markdown-Checkliste oder Tabelle entgegen, erkennt das Format und legt pro Zeile eine Aktivität an, wobei der Issue-Key (PROJ-123) als Aktivitätscode erhalten bleibt. Eine VS-Code-Erweiterung meldet bei jedem Wechsel den aktiven Branch und schlägt die passende Aktivität vor. Für Automatisierung stehen AppleScript, ein clessira-Kommandozeilenwerkzeug, Shortcuts und App Intents, macOS Services sowie eine Loopback-HTTP-API mit offiziellen npm- und PyPI-SDKs bereit.

Exportformate werden von den Nutzenden definiert, nicht von der Anwendung vorgegeben. Eigene Export-Skripte laufen als sandboxed JavaScript ohne Netzwerkzugriff, wodurch ein bestimmtes CSV-Layout für die Buchhaltung, ein Rechnungsformat oder JSON für ein nachgelagertes System eine Frage des Skripts ist und nicht eines Feature-Wunsches.

Speicherung und Synchronisation

Die Daten liegen in einer schlichten, menschenlesbaren JSON-Datei. Der eingebaute iCloud-Sync führt sie über mehrere Macs hinweg Eintrag für Eintrag zusammen; alternativ lässt sich die Datei in einem beliebigen Verzeichnis ablegen — Dropbox, OneDrive, eine Netzwerkfreigabe oder ausschließlich lokal. Tägliche rollierende JSON-Snapshots erlauben es, einen früheren Stand desselben Tages wiederherzustellen. Begleit-Apps für iPhone, iPad und Apple Watch spiegeln die laufende Sitzung.

Da keine Daten übertragen werden, gibt es keine Verarbeitung offenzulegen: kein Server, kein Konto, keine Analytics — und entsprechend wenig, was in einer Datenschutzerklärung stehen müsste.

Verfügbarkeit

Clessira ist im Mac App Store als Einmalkauf ohne Abo erhältlich; dieselbe universelle App läuft auch auf iPhone und iPad. Die Begründung des Speichermodells steht im Beitrag zu local-first Software.