{"id":18865195,"url":"https://github.com/sndnv/track","last_synced_at":"2026-04-28T18:04:16.670Z","repository":{"id":87885295,"uuid":"143186264","full_name":"sndnv/track","owner":"sndnv","description":"Simple time/task tracking terminal utility","archived":false,"fork":false,"pushed_at":"2018-08-22T20:44:24.000Z","size":172,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-30T15:53:31.961Z","etag":null,"topics":["elixir","elixir-lang","task-manager","terminal","time-tracker","tracking"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sndnv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-01T17:15:18.000Z","updated_at":"2018-08-22T20:29:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"7b42ec66-a9f0-48f4-9ac7-6025fed72ea8","html_url":"https://github.com/sndnv/track","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sndnv/track","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Ftrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Ftrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Ftrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Ftrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sndnv","download_url":"https://codeload.github.com/sndnv/track/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sndnv%2Ftrack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32392315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T14:34:11.604Z","status":"ssl_error","status_checked_at":"2026-04-28T14:32:37.009Z","response_time":56,"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":["elixir","elixir-lang","task-manager","terminal","time-tracker","tracking"],"created_at":"2024-11-08T04:46:17.497Z","updated_at":"2026-04-28T18:04:16.651Z","avatar_url":"https://github.com/sndnv.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# track\n[![Travis](https://travis-ci.org/sndnv/track.svg?branch=master)](https://travis-ci.org/sndnv/track) [![Coverage Status](https://coveralls.io/repos/github/sndnv/track/badge.svg?branch=master)](https://coveralls.io/github/sndnv/track?branch=master) [![license](https://img.shields.io/github/license/sndnv/track.svg)]()\n\n**track** is a terminal-based application for basic time/task tracking and reporting\n\n## Getting started\n\nInstalling **track** involves only obtaining the executable and placing it in its desired location. All data created by the application will be stored in `track/tasks.log` under the user's home directory.\n\n### Download or build\n\n\u003e Erlang/OTP needs to be installed\n\n###### Download\nThe latest [escript executable](https://hexdocs.pm/mix/master/Mix.Tasks.Escript.Build.html) can be found in [releases](https://github.com/sndnv/track/releases).\n\n###### Build\n\nRunning `MIX_ENV=prod mix escript.build` will create an escript executable called `track` in the project's folder.\n\n### Install\n\nThe application can be started from any directory and will (by default) write all its data to `$HOME/track/tasks.log`.\n\nFor convenience, the following commands can be executed:\n\n###### Linux:\n```bash\n# makes the application available to all users and runnable without full/relative path\nsudo mv track /usr/local/bin/track\n\n# generates the bash completion file\ntrack generate\n\n# moves the script to the bash_completion directory\nsudo mv track.bash_completion /etc/bash_completion.d/track\n\n# enables completion for the current session\nsource /etc/bash_completion.d/track\n```\n\n###### Mac:\n\n\u003e `bash-completion` is not available by default on Mac and will need to be installed first\n\n```bash\n# makes the application available to all users and runnable without full/relative path\nsudo mv track /usr/local/bin/track\n\n# generates the bash completion file\ntrack generate\n\n# moves the script to the bash_completion directory\nsudo mv track.bash_completion /usr/local/etc/bash_completion.d/track\n\n# enables completion for the current session\nsource /usr/local/etc/bash_completion.d/track\n```\n\n## Config\n\nCurrently, the only configurable parameter is the path to the tasks log.\n\nThe default log location is `$HOME/track/tasks.log`; in `dev` and `test`, all log files are placed under `\u003crepo dir\u003e/run/`.\n\nThe default config can be overridden by providing a custom config file: `track \u003ccommand\u003e [arguments] [parameters] --config \u003cpath to config file\u003e`\n\n###### Example config file\nA file `$HOME/track/config` with the following content\n```\nlog_file_path=\"$HOME/track/my_tasks.log\"\n```\n\ncan be used by calling: `track \u003ccommand\u003e [arguments] [parameters] --config $HOME/track/config`\n\n## Usage\n\n### Commands\n```\n         add | Adds a new task\n             |\n             | $ track add \u003ctask\u003e \u003cstart-date\u003e \u003cstart-time\u003e \u003cend-time|duration\u003e\n             |\n             | Options (required):\n             |   --task         - Task name (e.g. \"Working on project\", \"dev\", \"bookkeeping\")\n             |   --start-date   - Task start date (e.g. \"today\", \"today+2d\", \"today-1d\", \"1999-12-21\")\n             |   --start-time   - Task start time (e.g. \"now\", \"now+10m\", \"now-90m\", \"now+3h\", \"now-1h\", \"23:45\")\n             |   --end-time     - Task end time (e.g. \"now\", \"now+10m\", \"now-90m\", \"now+3h\", \"now-1h\", \"23:45\")\n             |   --duration     - Task duration (e.g. \"45m\", \"5h\")\n```\n\n```\n    generate | Generates a bash_completion script\n             |\n             | $ track generate\n```\n\n```\n        help | Shows this help message\n             |\n             | $ track help\n```\n\n```\n      legend | Shows a colour legend with a brief description of what the various chart/table colours mean\n             |\n             | $ track legend\n```\n\n```\n        list | Retrieves a list of all tasks based on the specified query parameters\n             |\n             | If no query parameters are supplied, today's tasks are retrieved, sorted by start time\n             |\n             | $ track list [\u003cfrom\u003e] [\u003cto\u003e] [\u003csort-by\u003e] [\u003corder\u003e]\n             |\n             | Options (optional):\n             |   --from         - Query start date (e.g. \"today\", \"today+2d\", \"today-1d\", \"1999-12-21\")\n             |   --to           - Query end date (e.g. \"today\", \"today+2d\", \"today-1d\", \"1999-12-21\")\n             |   --sort-by      - Field name to sort by (e.g. \"task\", \"start\", \"duration\")\n             |   --order        - Sorting order (e.g. \"desc\", \"asc\")\n```\n\n```\n      remove | Removes an existing task\n             |\n             | $ track remove \u003cid\u003e\n             |\n             | Arguments:\n             |   \u003cid\u003e         - Task UUID\n```\n\n```\n      report | Generates reports\n             |\n             | If no query parameters are supplied, today's tasks are retrieved and processed\n             |\n             | $ track report duration|day|week|month|task|overlap [\u003cfrom\u003e] [\u003cto\u003e] [\u003csort-by\u003e] [\u003corder\u003e]\n             |\n             | Arguments:\n             |   duration     - Shows the total duration of each task for the queried period\n             |   day          - Shows daily distribution of tasks\n             |   week         - Shows weekly distribution of tasks\n             |   month        - Shows monthly distribution of tasks\n             |   task         - Shows total duration of the task(s) per day\n             |   overlap      - Shows all tasks that are overlapping and the day on which the overlap occurs\n             |\n             | Options (optional):\n             |   --from         - Query start date (e.g. \"today\", \"today+2d\", \"today-1d\", \"1999-12-21\")\n             |   --to           - Query end date (e.g. \"today\", \"today+2d\", \"today-1d\", \"1999-12-21\")\n             |   --sort-by      - Field name to sort by (e.g. \"task\", \"start\", \"duration\")\n             |   --order        - Sorting order (e.g. \"desc\", \"asc\")\n```\n\n```\n     service | Executes management commands\n             |\n             | $ track service store clear\n             |\n             | Arguments:\n             |   store clear  - Removes all stored tasks\n```\n\n```\n       start | Starts a new active task\n             |\n             | Only one active tasks is allowed; the currently active task can be stopped with 'track stop'\n             |\n             | $ track start \u003ctask\u003e\n             |\n             | Arguments:\n             |   \u003ctask\u003e       - Task name (e.g. \"Working on project\", \"dev\", \"bookkeeping\")\n```\n\n```\n        stop | Stops an active task\n             |\n             | If the task's duration is under one minute, it is discarded.\n             |\n             | $ track stop\n```\n\n```\n      update | Updates an existing task\n             |\n             | All parameters are optional but at least one is required\n             |\n             | $ track update \u003cid\u003e [\u003ctask\u003e] [\u003cstart-date\u003e] [\u003cstart-time\u003e] [\u003cduration\u003e]\n             |\n             | Arguments:\n             |   \u003cid\u003e         - Task UUID\n             |\n             | Options (optional):\n             |   --task         - Task name (e.g. \"Working on project\", \"dev\", \"bookkeeping\")\n             |   --start-date   - Task start date (e.g. \"today\", \"today+2d\", \"today-1d\", \"1999-12-21\")\n             |   --start-time   - Task start time (e.g. \"now\", \"now+10m\", \"now-90m\", \"now+3h\", \"now-1h\", \"23:45\")\n             |   --duration     - Task duration (e.g. \"45m\", \"5h\")\n\n```\n\n### Additional options\n\n```\n    --config | Sets a custom config file\n             |\n             | $ track \u003ccommand\u003e [arguments] [parameters] --config file-path\n             |\n             | Arguments:\n             |   file-path    - Path to custom config file (e.g. \"~/track/tasks.log\")\n```\n\n```\n   --verbose | Enables extra logging\n             |\n             | $ track \u003ccommand\u003e [arguments] [parameters] --verbose\n\n```\n\n### Examples\n```\nAdds a new task called 'dev', starting now with a duration of 30 minutes\n     $ track add dev today now now+30m\n     $ track add dev today now 30m\n     $ track add --task dev --start-date today --start-time now --end-time now+30m\n     $ track add --task dev --start-date today --start-time now --duration 30m\n     $ track add task=dev start-date=today start-time=now end-time=now+30m\n     $ track add task=dev start-date=today start-time=now duration=30m\n\nShows the colour legend\n     $ track legend\n\nLists all tasks in the last 30 days and sorts them by ascending duration\n     $ track list today-30d today duration asc\n     $ track list --from today-30d --to today --sort-by duration --order asc\n     $ track list from=today-30d to=today sort-by=duration order=asc\n\nRemoves an existing task with ID '56f3db20-...'\n     $ track remove 56f3db20-...\n\nGenerates a report of the daily distribution of tasks\n for all tasks in the last 10 and the next 5 days, with default sorting\n     $ track report daily today-10d today+5d\n     $ track report daily --from today-10d --to today+5d\n     $ track report daily from=today-10d to=today+5d\n\nClears all tasks\n     $ track service store clear\n\nStarts a new active task called 'dev'\n     $ track start dev\n\nStops the currently active task\n     $ track stop\n\nUpdates an existing task with ID '56f3db20-...' to be called 'bookkeeping',\n starting yesterday with a duration of 45 minutes\n     $ track update 56f3db20-... bookkeeping today-1d 45m\n     $ track update 56f3db20-... --task bookkeeping --start-date today-1d --start-time now --duration 45m\n     $ track update 56f3db20-... task=bookkeeping start-date=today-1d start-time=now duration=45m\n\n```\n\n## Versioning\nWe use [SemVer](http://semver.org/) for versioning.\n\n## License\nThis project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details\n\n\u003e Copyright 2018 https://github.com/sndnv\n\u003e\n\u003e Licensed under the Apache License, Version 2.0 (the \"License\");\n\u003e you may not use this file except in compliance with the License.\n\u003e You may obtain a copy of the License at\n\u003e\n\u003e http://www.apache.org/licenses/LICENSE-2.0\n\u003e\n\u003e Unless required by applicable law or agreed to in writing, software\n\u003e distributed under the License is distributed on an \"AS IS\" BASIS,\n\u003e WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\u003e See the License for the specific language governing permissions and\n\u003e limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsndnv%2Ftrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsndnv%2Ftrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsndnv%2Ftrack/lists"}