jira-timesheet
Features Tastenkürzel Installation Voraussetzungen GitHub
Open Source TUI Tool · v1.23.0

Jira Timesheet

Terminal-basierte Anwendung für Stundenzettel aus Jira-Worklogs — inklusive manueller Nacherfassung für Zeiten, die nicht in Jira gebucht sind. Sechs Ansichten, Export nach Excel, PDF, JSON und Markdown, Feiertagskalender und Jahres-Forecast.

GitHub Repository Installation
jira-timesheet
Features

Was es kann

Stundenzettel aus Jira — automatisch generiert, um eigene Zeiten ergänzt, visuell aufbereitet, exportbereit.

🔗

Jira Cloud & Data Center

Worklogs per REST API — standardmäßig Jira Cloud (v3, Basic-Auth mit API-Token), per Schalter auch altes Server/Data Center (v2, Bearer-Token). Automatische Pagination und Filterung nach Zeitraum.

🎯

Budget-Feld automatisch ermitteln

Bei Jira Cloud findet ein Klick das Budget-Custom-Field automatisch — kein manuelles Nachschlagen der Field-ID nötig.

🧮

MwSt konfigurierbar

Der MwSt-Satz ist eine Einstellung für die Netto/Brutto-Berechnung in TUI und Jahresansicht (Standard 19 %).

📋

Sechs Ansichten

Listenansicht mit KW und Wochentag, Monatsansicht mit Tageskacheln, Jahresansicht mit Forecast und die drei Ticket-Ansichten. Tab-Navigation mit Klick oder TAB-Taste.

🎯

Meine Tickets

Alle offenen Tickets, gruppiert danach, wer gerade am Zug ist: was du selbst bearbeitest, was auf Freigabe wartet, was im Backlog liegt, was zurückzugeben ist - und was Jira für fertig hält, obwohl noch Arbeit bleibt. Genau diese letzte Gruppe fällt aus jeder üblichen Abfrage heraus: bei einer vermessenen Instanz waren das 24 von 93 Tickets, die lautlos fehlten.

👀

Meine Aktivitäten

Tickets, die dir nicht zugewiesen sind, an denen du aber drangewesen bist: selbst angelegt, beobachtet, Zeit gebucht, bearbeitet oder namentlich erwähnt. Mit Zeitfenster, damit die Liste ein Arbeitsvorrat bleibt und kein Archiv.

👥

Mein Team

Derselbe Blick auf den Ticketstand von Kolleginnen und Kollegen, ohne dass diese etwas installieren müssen. Gesucht wird über den Namen, nicht über die Mailadresse: die gibt ein Jira-Konto nur heraus, wenn das Profil es zulässt, und wer mehrere Konten führt, trägt die Arbeit mal auf dem einen und mal auf dem anderen. Die Trefferliste sortiert deshalb nach der jüngsten Änderung - das aktuelle Konto ist nicht zwingend das größte. Ohne Zeitbuchungen und ohne Auswertung: gezeigt wird, was das Jira-Board ohnehin jedem im Team zeigt. Aus jeder Ticketliste führt "Tickets von X anzeigen" im Kontextmenü direkt dorthin. Wer noch nicht auf der Merkliste steht, erscheint vorübergehend und lässt sich per Knopf aufnehmen.

📉

Auswertung im Terminal

Zulauf gegen Abgang je Monat und die Altersverteilung der offenen Tickets, als echte Diagramme mit Achsen und Legende - gezeichnet mit plotext. Dazu eine Zeile mit Bestand, Durchsatz und Saldo. Zugeklappt als Vorgabe: die Zahlen kosten eine eigene Abfrage über die gesamte Historie, und ein Abruf, den niemand sehen will, muss auch nicht laufen.

⏱️

Liegezeit in Arbeitstagen

Gerechnet wird Montag bis Freitag zwischen 8 und 18 Uhr. Ein Ticket, das Freitagnachmittag liegen bleibt und Montagvormittag wieder angefasst wird, hat einen Arbeitstag gelegen und nicht drei. Merkmale wie "verwaist", "blockiert" oder "Pile of Shame" zeigen, warum ein Ticket auffällt.

📄

Excel & PDF Export

Formatierter Stundenzettel mit Logo und Unterschriftszeile. PDF ist Adobe-signierbar.

📅

Feiertagskalender

Deutsche Feiertage pro Bundesland. Lücken-Erkennung für fehlende Arbeitstage.

📊

Soll/Ist & Forecast

Arbeitszeitvergleich mit Differenz. Jahres-Forecast mit Urlaubstagen und Umsatzprognose.

🎨

Retro-Themes

31 Themes von vintage 8-bit über Terminal-Phosphor und Unix-Workstation bis zu 80s-Pastel — wechselbar mit Ctrl+P.

🔍

Ticket-Details

Enter oder D zeigt Status, Typ, Bearbeiter, Komponenten und Jira-Link im Log.

📈

Ticket-Analyse

Mit B wird aus einem Ticket ein interaktiver Bericht: maßstabsgetreue Zeitachse des Lebenszyklus, Liegezeit je Status - Kalenderzeit gegen echte Arbeitszeit -, die Beteiligten, Kennzahlen wie Flow-Effizienz und erste Reaktion, dazu Befunde mit Beleg. Ergebnis ist eine einzelne HTML-Datei, die offline läuft und sich weitergeben lässt. Auffällig lange Liegezeiten werden rot markiert, verwandte Tickets zeigen ihren Titel, und der fertige Bericht öffnet sich gleich im Browser.

🔒

Anonymisierung

Daten per Tastendruck anonymisieren für sichere Screenshots und Demos.

✍️

Manuelle Zeiterfassung

Nicht jede Stunde landet als Worklog in Jira. Mit M lassen sich Zeiten direkt im Tool erfassen — Aufwand wahlweise als 3h 30m, 3:30 oder 3,5. Sie liegen in einer eigenen SQLite-Datei, zählen überall mit und sind farblich markiert - inklusive ausgewiesenem Anteil in der Kennzahlen-Zeile und in der Jahresansicht.

📐

Konfigurierbare Spalten

Jede der acht Spalten lässt sich getrennt für Anzeige und Export schalten und im Export frei benennen — inklusive Kunden-Spalte. In der Liste lassen sich die Breiten mit der Maus ziehen; die Beschreibung füllt automatisch den Rest.

💾

Worklog-Cache

Abgeschlossene Monate werden gecached — Jahresansicht lädt beim zweiten Mal sofort.

Bedienung

Tastenkürzel

TasteAktion
F5Aktualisiert, was gerade zu sehen ist - Stundenzettel oder Ticket-Ansicht
EExport - Format (Excel, PDF, JSON, Markdown) wird im Speichern-Dialog gewählt
DTicket-Details anzeigen
MManuelle Zeit erfassen bzw. markierten Eintrag bearbeiten
ENTFMarkierten manuellen Eintrag löschen (mit Rückfrage)
TABTab wechseln (Stundenzettel / Monat / Jahresansicht / Meine Tickets / Meine Aktivitäten / Mein Team)
RCache zurücksetzen
JJahresansicht mit Forecast
ADaten anonymisieren
< / >Monat wechseln
SSettings öffnen
IInfo-Dialog
CLog in Zwischenablage kopieren
LLog ein-/ausblenden
Ctrl+PTheme wechseln
QBeenden
Erste Schritte

Installation

💻

Windows (PowerShell)

irm https://raw.githubusercontent.com/michaelblaess/jira-timesheet/main/install.ps1 | iex
🐧

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/michaelblaess/jira-timesheet/main/install.sh | bash

Voraussetzung: Python 3.10+ · Danach einfach jira-timesheet im Terminal eingeben.

Bevor es losgeht

Was du aus Jira brauchst

Das Programm meldet sich mit deinem eigenen Konto an - kein Server, keine Registrierung. Drei Angaben: Adresse, Token, Kennung.

☁️

Jira Cloud

Token unter id.atlassian.com anlegen: Create API token, Name, Ablaufdatum (1 bis 365 Tage). Er wird nur einmal angezeigt. Als Kennung die Mailadresse des Atlassian-Kontos.

🏢

Data Center / Server

Avatar → ProfilePersonal access tokens (ab Jira 8.14). Kennung ist der Jira-Benutzername, und der Schalter Jira-Modus muss an sein. Hier ist ScriptRunner Pflicht - die Worklog-Suche läuft über dessen JQL-Funktion.

🎫

Optional: Budget und Status

Das Budget-Feld findet auf Cloud ein Klick selbst. Die Statuslisten der Ticket-Ansichten dürfen leer bleiben - dann sortiert das Programm nach der Statuskategorie, die Jira ohnehin vergibt.

Schritt für Schritt steht das in der README.

Technologie

Tech Stack

Python 3.10+ Textual Rich httpx openpyxl fpdf2 holidays

Disclaimer: Dieses Projekt ist nicht von Atlassian entwickelt, unterstützt oder autorisiert. "Jira" und "Atlassian" sind eingetragene Markenzeichen von Atlassian Corporation. Dieses Tool nutzt die öffentliche Jira REST API und steht in keiner Verbindung zu Atlassian.