CLI tool for automatically reporting work time from local sources (time trackers) to task trackers.
At work, you need to log time spent on tasks. Throughout the day you switch between different tasks and activities, but task trackers like YouTrack often lack convenient built-in time tracking tools. Meanwhile, dedicated time trackers like SuperProductivity do this job perfectly — but at the end of the day, manually copying worklogs from one tool to another is tedious, repetitive, and boring.
Work Reporter automates this routine. It reads time entries from your local time tracker and submits them to your task tracker with a single command. Just configure the source-to-destination mapping once, and let Work Reporter handle all the dirty work for you.
- 📥 Supported sources:
- SuperProductivity (sync file)
- Plain JSON file
- 📤 Supported destinations:
- 🔀 Automatic grouping of identical time entries
- 🕐 Filtering out entries shorter than 1 minute
- 🔧 Simple YAML configuration
🏗️ The architecture is extensible — adding new sources and destinations is straightforward.
One-liner install — download the latest binary and you're ready to go:
echo "⬇ Downloading work-reporter..." && curl -#L "$(curl -s https://api.github.com/repos/igancev/work-reporter/releases/latest | grep -oP '"browser_download_url":\s*"\K[^"]*linux-amd64')" -o work-reporter && echo "📦 Installing to /usr/local/bin..." && chmod +x work-reporter && sudo mv work-reporter /usr/local/bin/ && echo "✅ Done. Run: work-reporter --version"echo "⬇ Downloading work-reporter..." && curl -#L "$(curl -s https://api.github.com/repos/igancev/work-reporter/releases/latest | grep -o '"browser_download_url":[^"]*"[^"]*darwin-arm64[^"]*"' | cut -d'"' -f4)" -o work-reporter && echo "📦 Installing to /usr/local/bin..." && chmod +x work-reporter && sudo mv work-reporter /usr/local/bin/ && echo "✅ Done. Run: work-reporter --version"work-reporter --version💡 You can also browse all releases for manual download.
Generate a default configuration file:
work-reporter initThis creates a config file at ~/.config/work-reporter/config.yaml with a template you can edit.
Create a config file at ~/.config/work-reporter/config.yaml:
# Active Source type: superProductivity | plainJson
source: superProductivity
# Active Destination type: youTrack | somethingElse
destination: youTrack
# Configuration for each source type
sources:
superProductivity:
syncFilePath: ~/.config/superProductivity/__meta_
plainJson:
filePath: /path/to/time-entries.json
# Configuration for each destination type
destinations:
youTrack:
# Your YouTrack instance URL
url: https://youtrack.example.com
# Permanent token for authentication
token: your-api-token- Open YouTrack → Profile → Account Security
- Click New token…
- Set the scope and create the token
- Paste the token into your config file
- Open SuperProductivity → Settings → Sync & Export → Sync
- Enable Enable Syncing
- Choose Sync folder path
- Paste the same path into
sources.superProductivity.syncFilePathin your config file
# Submit worklogs for today (default)
work-reporter
# Submit worklogs for a specific date range (optional)
work-reporter --from="2026-05-01" --to="2026-05-02"📅 Both
--fromand--toare optional. If omitted, today's date is used by default.
- PHP 8.4+
- Composer
composer install| Command | Description |
|---|---|
make cs |
Check code style (PSR-12) |
make cs-fix |
Auto-fix code style |
make stat-analyze |
Static analysis (PHPStan) |
make unit |
Run unit tests |
make functional |
Run functional tests |
make check-all |
Run all checks |
make mutation |
Mutation testing (Infection) |
Mutation testing runs via Infection and is not part of make check-all. CI enforces a threshold (min-msi=70 and min-covered-msi=70) to ensure test quality. Raise the thresholds in .github/workflows/quality-checks.yaml as test quality improves.
The project follows a Source → Destination pattern:
[SuperProductivity / JSON] → TimeEntry[] → [YouTrack]
Source— reads time entries from a local data sourceTimeEntry— value object representing a single entryDestination— submits entries to a task tracker
Contributions are welcome! Please read the Contribution Guide before opening a Pull Request — it describes the testing and CI requirements your change must satisfy.
Quick start:
- Fork the repository
- Create a feature branch (
git checkout -b feature/awesome) - Cover your changes with tests
- Make sure
make check-allpasses ✅ - Open a Pull Request
Give it a star — it helps and motivates! 🌟
