{"id":26614588,"url":"https://github.com/dvklopfenstein/timetracker","last_synced_at":"2025-07-17T05:35:22.553Z","repository":{"id":273760523,"uuid":"920783885","full_name":"dvklopfenstein/timetracker","owner":"dvklopfenstein","description":"Pandas-friendly time tracking from the CLI","archived":false,"fork":false,"pushed_at":"2025-04-08T07:20:20.000Z","size":3512,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T08:26:15.173Z","etag":null,"topics":["cli","collaboration","csv","csv-export","csv-reading","history","linux","pandas","productivity","time-tracker","timetracker","timetracking"],"latest_commit_sha":null,"homepage":"https://dvklopfenstein.github.io/timetracker/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dvklopfenstein.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-22T19:06:55.000Z","updated_at":"2025-04-08T07:20:25.000Z","dependencies_parsed_at":"2025-02-07T17:19:40.476Z","dependency_job_id":"5f0bed09-3bb7-4150-bf53-834f220125b9","html_url":"https://github.com/dvklopfenstein/timetracker","commit_stats":null,"previous_names":["dvklopfenstein/timetracker"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvklopfenstein%2Ftimetracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvklopfenstein%2Ftimetracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvklopfenstein%2Ftimetracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvklopfenstein%2Ftimetracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvklopfenstein","download_url":"https://codeload.github.com/dvklopfenstein/timetracker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248155481,"owners_count":21056646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","collaboration","csv","csv-export","csv-reading","history","linux","pandas","productivity","time-tracker","timetracker","timetracking"],"created_at":"2025-03-24T05:34:29.321Z","updated_at":"2025-07-17T05:35:22.547Z","avatar_url":"https://github.com/dvklopfenstein.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\" style=\"display:inline\"\u003e\n\u003ch1 align=\"center\"\u003eTimetracker-csv\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003ePandas-friendly time tracking from the CLI, repo by repo\u003c/h3\u003e\n\u003ch3 align=\"center\"\u003e\n\u003ca href=\"https://pypi.org/project/timetracker-csv\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/timetracker-csv\" alt=\"PyPI - Version\"\u003e\u003c/a\u003e |\n\u003ca href=\"https://doi.org/10.5281/zenodo.14803226\"\u003e\u003cimg src=\"https://zenodo.org/badge/DOI/10.5281/zenodo.14803226.svg\" alt=\"DOI\"\u003e\u003c/a\u003e |\n\u003ca href=\"https://www.gnu.org/licenses/agpl-3.0.en.html\"\u003e\u003cimg src=\"https://img.shields.io/github/license/dvklopfenstein/timetracker\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/h3\u003e\n\u003cpre align=\"center\" style=\"font-family: monospace; font-size: larger; border: 1px solid #ccc; padding: 10px; display: inline-block;\"\u003e\n┌────────────────────────────┐\n│ 🕒 Timetracker CLI Tool    │\n│ Track time → CSV → pandas  │\n└────────────────────────────┘\n\u003c/pre\u003e\n\u003c/p\u003e\n\n---\n\n* Track time spent on multiple projects,\none repo at a time from the [CLI](https://blog.iron.io/pros-and-cons-of-a-command-line-interface)    \n\n* Time is saved in\n[pandas](https://pandas.pydata.org/pandas-docs/stable/index.html)-friendly\nplain text [CSV](https://www.datarisy.com/blog/understanding-csv-files-use-cases-benefits-and-limitations) files.\n\n* CSV files for each project can be combined into a single CSV file for analysis and plotting.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/dvklopfenstein/timetracker/raw/main/doc/mkdocs/source/images/stopwatch.png\" alt=\"timetracker\" width=\"750\"/\u003e\u003c/p\u003e\n\n* [Advantages](#advantages)\n* [Quickstart](#quickstart)\n* [Installation](#installation)\n* [Other time-trackers](#other-timetrackers)\n* [Documentation](http:/dvklopfenstein.github.io/timetracker)\n* [Issues and feedback](https://github.com/dvklopfenstein/timetracker/issues/new/choose)\n\n## Advantages\n* **Freedom**: Libre Software (aka open-source)\n* **Simple**: Quick to set up\n* **Privacy**: Own your data\n* **Anti-stalking**: No invasive tracking ever of keystrokes, browser activity, mouse-clicks, etc.,\nas is done by multitudinous other timetracking apps\n* **Human-and-machine-readable**: ASCII data stored in CSV (comma-separated values) [plaintext](http://www.markwk.com/plain-text-life.html) files:\n  * Ready for [pandas](https://pandas.pydata.org/), the Python Data Analysis Library for tabular data\n  * Editable using [many editors](https://survey.stackoverflow.co/2024/technology/#3-integrated-development-environment), including vim and Notepad++\n* **Flexible**: Modify your data if you forget to log time\n* **Quickview**:\n  * Current task being recorded\n  * Elapsed time spent on the current task\n* **No clicking and clicking and clicking** on a GUI\n* **Go off-line**: No required use of the internet or cloud-based services\n* **Data field support**: Data supported for each time interval includes:\n  * A required free-form descriptive message\n  * An optional `activity` or type\n  * Any number of optional `tag`s\n* **Plays nice**: Export data for import by external time-tracking viewers\n\n## Quickstart\nThe `name` used by this time tracker is determined by the `USER` environmental variable by default.\n### 1) Initialize a timetracker project\n```\n$ cd ~/projects/meetinghouse\n\n$ trk init\nInitialized timetracker directory: /home/bez/projects/meetinghouse/.timetracker\n```\n### 2) Start the timer\n```\n$ trk start\nTimetracker started now: Mon 09:00 AM: 2025-03-24 09:00:00\n```\n### 3) Stop the timer\n```\n$ trk stop -m 'Received architectural plans'\nTimer stopped at Mon 2025-03-24 12:00:00 PM\nElapsed H:M:S 0:03:00 appended to timetracker_meetinghouse_bez.csv\n```\n### 4) Report my time units for this project\n```\n$ trk report\nDay  Date        Span     Total  Description\nSun  2025-03-24  03:00    03:00  Received architectural plans\n```\nYou can also get the total hours that you spent on a project:\n```\n$ trk hours\n0:03:00 H:M:S or 3.000 hours\n```\n\n## Installation\nInstall with [timetracker-csv](https://pypi.org/project/timetracker-csv/) pip:\n```\n$ pip install timetracker-csv\n```\nOr install from source:\n```\n$ git clone git@github.com:dvklopfenstein/timetracker.git\n$ cd timetracker\n$ pip install .\n```\n\n## Other timetrackers\n* 700+ stars [Bartib](https://github.com/nikolassv/bartib)\n* 740+ stars [timetrace](https://github.com/dominikbraun/timetrace)\n* 13k stars [ActivityWatch](https://github.com/ActivityWatch/activitywatch)\n* 85 stars [ti](https://github.com/richmeta/ti)\n* 44 stars [tim](https://github.com/MatthiasKauer/tim)\n* 6 stars [Jupyter timetracker](https://github.com/PrateekKumarPython/jupyter-timetracker) uses aTimeLogger CSV format\n* https://atimelogger.pro/ CSV files\n* [List of timetrackers in PyPi](https://pypi.org/search/?q=timetracker)\n* [web-based time tracking application](https://github.com/anuko/timetracker)\n* [Wage Labor record](https://pypi.org/project/wage-labor-record/):\n  * jupyter-timetracker - GUI too complex/too close to DB editing tools. No support for clients\n  * tim CLI only, no idle time detection but uses hledger as a backend!\n  * salary-timetracker CLI only, tracking bound to git repos, fixed hourly rate but hey it uses CSV files!\n  * ttrac CLI only, no idle time detection, no support for clients or tasks but uses JSON files!\n  * tickertock only with a StreamDeck, wants to use cloud service as backend but uses a hardware interface!\n  * mttt CLI only, no idle time detection but uses plain text files!\n  * tt-cli CLI only, no idle time detection, no support for clients\n  * timetracker CLI only, no idle time detection, no support for clients\n  * 1k stars [hamster comes pretty close but seems outdated/abandoned and a little bit too complex](https://github.com/projecthamster/hamster)\n\nCopyright (C) 2025-present, DV Klopfenstein, PhD. All rights reserved\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvklopfenstein%2Ftimetracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvklopfenstein%2Ftimetracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvklopfenstein%2Ftimetracker/lists"}