{"id":21433469,"url":"https://github.com/clobrano/letsdo","last_synced_at":"2026-02-08T10:04:52.766Z","repository":{"id":40444305,"uuid":"72686600","full_name":"clobrano/letsdo","owner":"clobrano","description":"Letsdo, the CLI time tracker","archived":false,"fork":false,"pushed_at":"2024-07-30T08:15:21.000Z","size":306,"stargazers_count":5,"open_issues_count":7,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-13T06:58:20.744Z","etag":null,"topics":["cli","gtd","timetracker"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clobrano.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":"2016-11-02T22:24:35.000Z","updated_at":"2024-07-29T13:01:45.000Z","dependencies_parsed_at":"2024-07-27T14:51:43.141Z","dependency_job_id":null,"html_url":"https://github.com/clobrano/letsdo","commit_stats":{"total_commits":335,"total_committers":2,"mean_commits":167.5,"dds":0.4477611940298507,"last_synced_commit":"022606edd6b8530aa350077b2e656508c50195c7"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clobrano%2Fletsdo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clobrano%2Fletsdo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clobrano%2Fletsdo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clobrano%2Fletsdo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clobrano","download_url":"https://codeload.github.com/clobrano/letsdo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225980903,"owners_count":17554919,"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","gtd","timetracker"],"created_at":"2024-11-22T23:28:26.656Z","updated_at":"2026-02-08T10:04:52.720Z","avatar_url":"https://github.com/clobrano.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Snap Status](https://github.com/snapcore/snap-store-badges/blob/master/EN/%5BEN%5D-snap-store-black-uneditable%401x.png)](https://snapcraft.io/letsdo)\n[![PyPI version](https://badge.fury.io/py/letsdo.svg)](https://badge.fury.io/py/letsdo)\n\n\n# Breaking changes\n\nStarting from v2.0.0, Letsdo has this configuration changes:\n- the configuration file name changes from `$HOME/.letsdo` to `$HOME/.letsdo.yaml`\n- the data file name changes from `\u003cdata_directory\u003e/letsdo-data` to `\u003cdata_directory\u003e/letsdo-history`\n\nIf you have old data and configuration, just change the names accordingly and all will work as before.\n\n# Letsdo, the CLI time-tracker\n\nLetsdo helps you to be more focused and productive tracking the time you spend on your work activities.\n\n# Features\n\nHave a look at the **help** message:\n\n```\n$ letsdo\nUsage:\n    lets do     \u003cname\u003e... [--time=\u003ctime\u003e]\n    lets see    [all|config] [--detailed|--day-by-day] [--ascii| --dot-list] [-p|--project] [\u003cquery\u003e...]\n    lets edit\n    lets cancel\n    lets stop   [\u003ctime\u003e...]\n    lets goto   \u003cnewtask\u003e...\n    lets track  \u003cname\u003e...\n    lets config\n    lets autocomplete\n\noptions:\n    -a, --ascii       Print report table in ASCII characters\n    -t, --time=\u003ctime\u003e Change the start/stop time of the task on the fly\n\nexamples:\n    lets see            # show today's activities\n    lets see yesterday  # show yesterday's activities\n    lets see 2018-07    # show 2018 July's activities\n    lets see last July  # same as above (if we're still in 2019)\n    lets see +project   # show activities with +project tag (+project is autocompleted with TAB)\n    lets see something  # show activities whose description has he word 'something'\n    lets see this week\n    lets see last month\n    lets see 2019\n    ...\n\n```\n\nFirst of all, we do not want to waste time typing too much. **Letsdo is the name of the package** and you can use it as well **as command line interface**, but all the interface is designed to be as informal as possible, so you are encouraged to use **lets** instead.\n\nThat said, when you do not know what to do, just write **lets see**, this command shows the current status of your task, whether you're doing something or not\n\n```\n$ lets see\n```\n\nWhen you're ready to start with something just type **lets do** followed by a short description.\n\n~~~sh\n$ lets do write a good readme\ntask 'write a good readme' started at 2020-10-04 11:38:00\n~~~\n\n**Contexts**, and **Projects** are supported in form of words starting with **@**, or **+** signs respectively.\n\n~~~sh\n$ lets do +myproject write a good readme\ntask '+myproject write a good readme' started at 2020-10-04 11:38:00\n~~~\n\nYou can **edit** the current task's name or starting time, **cancel** it or **stop** it.\n\n~~~sh\n$ lets stop\nstopped task '+myproject write a good readme @github' after 0 hours, 40 minutes\n~~~\n\n~~~sh\n$ lets do foo\ntask 'foo' started at 2020-10-04 12:30:00\n$ lets cancel\nCancelled task\n{\n    \"name\": \"foo\",\n    \"start\": \"2020-10-04 12:30:58.404926\"\n}\n~~~\n\nIf you forgot to stop the task on time, you can adjust it giving an absolute or relative time:\n\n~~~sh\n$ lets stop 11:02\n$ lets stop 10 minutes ago\n~~~\n\nOnce stopped, the task is saved in your **history**, that by default is located under your `HOME` directory in a file called 'letsdo-data'.\n\nDon't you like the default location? let's have a look at the **config** sub-command:\n\n~~~sh\n$ lets config\n~~~\n\n**config** opens the configuration file (HOME/.letsdo.yaml) with two configurable fields\n\n```\ncolor: true\ndata_directory: /home/username/\n```\n\nLet's see now the history: you can rapidly have a look at **today** and **yesterday** work done by typing:\n\n```\n$ lets see today\n$ lets see yesterday\n```\n\nIf you want to see the work done in another date, just write the date:\n\n```\n$ lets see 2017-07-13\n```\n\na partial date will do as well, just keep the same order: Year first, then Month and Day\n\n```\n$ lets see 17-07-13\n```\n\nyou can even use only '07-13' if you have not yet tracked data in different years.\n\nThe same way, you can look at all the work done in a particular month:\n\ne.g in July 2017\n\n```\n$ lets see 17-07\n```\n\nor **all** your tasks:\n\n```\n$ lets see all\n```\n\nor again, a specific project or all the tasks that share a pattern:\n\n```\n$ lets see +myproject\n```\n\nAs you can see, tasks are reported along with an ID, so you can re-start the same task again using its ID:\n\n```\n$ lets do 10\n```\n\nor if you just want to start again the **last** task you stopped\n\n```\n$ lets do last\n```\n\nDo you switch often among tasks? Do not need to stop and start again, just **goto** using description or ID again:\n\n```\n$ lets goto new project\n$ lets goto 3\n```\n\nFinally, you can configure **autocompletion** to let Letsdo suggest your flags, contexts and projects' names, type **lets config autocomplete** and follow the instructions.\n\n# Licence\nLetsdo is release under the [MIT](https://opensource.org/licenses/MIT) license. See LICENSE file for more details.\n\n\n# Contributions\nI am really happy to consider any PR that can make Letsdo better.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclobrano%2Fletsdo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclobrano%2Fletsdo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclobrano%2Fletsdo/lists"}