{"id":42528146,"url":"https://github.com/nicolai86/traq","last_synced_at":"2026-01-28T16:09:36.533Z","repository":{"id":5948957,"uuid":"7169835","full_name":"nicolai86/traq","owner":"nicolai86","description":"time tracking /w your terminal","archived":false,"fork":false,"pushed_at":"2018-10-12T19:38:57.000Z","size":97,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-15T09:39:40.632Z","etag":null,"topics":["cli","timetracking"],"latest_commit_sha":null,"homepage":"http://blog.nicolai86.eu/posts/2012-12-14/introducing-traq/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"xbmc/xbmc","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicolai86.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-12-14T18:24:51.000Z","updated_at":"2020-06-08T09:28:59.000Z","dependencies_parsed_at":"2022-08-19T12:10:07.896Z","dependency_job_id":null,"html_url":"https://github.com/nicolai86/traq","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/nicolai86/traq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolai86%2Ftraq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolai86%2Ftraq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolai86%2Ftraq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolai86%2Ftraq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicolai86","download_url":"https://codeload.github.com/nicolai86/traq/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolai86%2Ftraq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28846822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","timetracking"],"created_at":"2026-01-28T16:09:35.892Z","updated_at":"2026-01-28T16:09:36.518Z","avatar_url":"https://github.com/nicolai86.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# traq\n\n![travis build status](https://travis-ci.org/nicolai86/traq.svg?branch=master)\n\ntime tracking using text files\n\n## Usage examples\n\n``` bash\n# start time tracking for #project\n$ traq project\n\n# start time tracking for #project with the comment 'working on the landing page'\n$ traq project working on the landing page\n\n# stop time tracking\n$ traq stop\n\n# echo the content of todays file to stdout. If the file does not exist, nothing is echoed.\n$ traq\n\n# echo the content of the file from the given date to stdout. If the file does not exist, nothing is echoed.\n$ traq -d 2012-07-30\n\n# echo the content of all files in february of the current year\n$ traq -m 2\n\n# echo the content of all files in september 2012\n$ traq -m 9 -y 2012\n\n# starts time tracking for client-a on #development\n$ traq -p client-a development\n\n# stops time tracking for client-a\n$ traq -p client-a stop\n\n# list tracked times for client-a from today\n$ traq -p client-a\n```\n\n## Evaluation\n\nTo evaluate traq files pass the `-e` command line flag to the utility.\nE.g.\n\n    $ traq -p test -e\n    2012-09-27\n    #foo:0.1666\n    #bar:0.1666\n    %%\n\n## Installation from source\n\n``` bash\n$ go get github.com/nicolai86/traq\n$ echo \"export TRAQ_PATH=$GOPATH/src/github.com/nicolai86/traq\" \u003e\u003e ~/.bash_profile\n$ echo \"export TRAQ_DATA_DIR=$HOME/Library/traq\" \u003e\u003e ~/.bash_profile\n$ ln -s $TRAQ_PATH/man/traq.1 /usr/local/share/man/man1/traq.1\n$ . ~/.bash_profile\n$ which traq\n```\n\n### Build instructions\n\nMake sure your `$GOPATH` is set up properly. Then link traq properly:\n\n``` bash\n$ mkdir -p $HOME/go/src\n$ ln -s $HOME/.traq/src/ $HOME/go/src/traq\n```\n\n``` bash\n$ go build -o bin/traq app.go\n```\n\n### Go Formatting\n\n``` bash\n$ gofmt -w traq.go\n```\n## Bash Completion\n\nIf you have `bash-completion` installed you can setup bash completion for traq as well. This example assumes you are using [HomeBrew][1] and have `bash-completion` installed.\n\n``` bash\n$ ln -s $TRAQ_PATH/traq_completion.sh $(brew --prefix)/etc/bash_completion.d/traq\n```\n\nUbuntu users can do the following:\n\n``` bash\n$ sudo apt-get install bash-completion\n$ echo \". $TRAQ_PATH/traq_completion.sh\" \u003e\u003e ~/.bash_profile\n```\n\n## Migration to v0.5\n\ntraq 0.5 has a different, flatter directory structure. Instead of one directory per year week of the year,\nwe now only have one directory per year.\n\nThe following bash script helps you migrate your data:\n\n```bash\nfor directory in $(find $HOME/Library/traq -maxdepth 1 -mindepth 1 -type d); do\n  echo $directory\n  for year in $(find $directory -maxdepth 1 -mindepth 1 -type d); do\n    for week in $(find $year -maxdepth 1 -mindepth 1 -type d); do\n      for file in $(find $week -maxdepth 1 -mindepth 1 -type f); do\n        cleanfile=\"${file//timestamps-/}\"\n        mv \"$file\" \"$year/${cleanfile##*/}\"\n      done\n      rm -fr $week\n    done\n  done\ndone\n```\n\n## Hacking\n\nAll files are placed under\n\n    $ $TRAQ_DATA_DIR/timestamps/\u003ccurrent year\u003e/\u003cyear\u003e-\u003cmonth\u003e-\u003cday\u003e\n    # eg $TRAQ_DATA_DIR/timestamps/2012/2012-12-12\n\nor, if `-p \u003cproject\u003e` was given, under\n\n    $ $TRAQ_DATA_DIR/\u003cproject\u003e/\u003ccurrent year\u003e/\u003cyear\u003e-\u003cmonth\u003e-\u003cday\u003e\n    # eg $TRAQ_DATA_DIR/client-a/2012/2012-12-12\n\nEach file can contain multiple lines of the following format:\n\n\n    \u003ctimestamp\u003e;\u003ctag\u003e;\u003ccomment\u003e\n\n\nHere's some sample content:\n\n    Thu Sep 27 07:05:05 +0400 2012;#foo;Worked on Foo\n    Thu Sep 27 07:15:05 +0400 2012;#bar;\n    Thu Sep 27 07:25:05 +0400 2012;stop;\n\n[1]:http://mxcl.github.com/homebrew/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolai86%2Ftraq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicolai86%2Ftraq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolai86%2Ftraq/lists"}