{"id":20080677,"url":"https://github.com/cloud8421/today","last_synced_at":"2026-06-08T08:05:59.968Z","repository":{"id":47604141,"uuid":"198562751","full_name":"cloud8421/today","owner":"cloud8421","description":"Daily, CLI-based task manager","archived":false,"fork":false,"pushed_at":"2019-10-24T06:06:30.000Z","size":169,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-02T13:26:24.797Z","etag":null,"topics":["cli","haskell","task-manager"],"latest_commit_sha":null,"homepage":"https://cloud8421.github.io/today/","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloud8421.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-07-24T05:12:30.000Z","updated_at":"2019-10-24T06:06:24.000Z","dependencies_parsed_at":"2022-09-11T18:13:48.923Z","dependency_job_id":null,"html_url":"https://github.com/cloud8421/today","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/cloud8421/today","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Ftoday","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Ftoday/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Ftoday/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Ftoday/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloud8421","download_url":"https://codeload.github.com/cloud8421/today/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Ftoday/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34053502,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","haskell","task-manager"],"created_at":"2024-11-13T15:29:33.106Z","updated_at":"2026-06-08T08:05:59.939Z","avatar_url":"https://github.com/cloud8421.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Today - CLI Task Manager\n\n[![CircleCI](https://circleci.com/gh/cloud8421/today.svg?style=svg\u0026circle-token=b6247f7bf94460ff15e6b85ba4abbf19cfe62f70)](https://circleci.com/gh/cloud8421/today)\n\nEfficiently manage tasks from the command line.\n\n```\n  @inbox [1/2]\n    1. ✔  Install today 2d\n    2. ◻  Learn how to use today 2d\n\n  @work [0/1]\n    3. ◻  Finally fix issue TODAY#2345 2d\n          | TODAY#2345: https://github.com/cloud8421/today/issues/2345\n\n  33% of all tasks complete.\n  1 done · 0 in progress · 2 pending · 0 cancelled\n```\n\n## Demo\n\n[![asciicast](https://asciinema.org/a/263518.svg)](https://asciinema.org/a/263518)\n\n## Philosophy\n\nToday heavily borrows from [taskbook](https://github.com/klaussinani/taskbook).\n\nFeatures:\n\n- Manage tasks and associate them to a specific context.\n- Tasks can be marked as cancelled and subsequently deleted.\n- Support shorthand references in the task description that get automatically expanded according to URL templates.\n- Two commands, `in` and `out`, which output the list of tasks to a format that can be pasted to Slack.\n- All data written to a single file, which can be put in Dropbox etc.\n\n## Usage example\n\n1. You can start with `today list` to see the default content.\n2. Add a task with `today add \"Email triage\"`.\n3. Add a task in a specific context with `today add --context \"Find a solution for issue TODAY#2313\"`. Note the `TODAY#2313` reference to service `TODAY` with identifier `2313`, which identifies an issue with that number in this very repo.\n4. Add a reference rule for `TODAY#2313`, so that it gets expanded automatically (only needed once per Taskfile) `today set-ref TODAY \"https://github.com/cloud8421/today/$id`. Always make sure that you add the `$id` fragment to signal where you want interpolation to happen.\n5. Run `today list` and see the expanded reference below the task.\n6. Run `today in` for a today message you can paste wherever you like (references are already expanded).\n7. Start a task: `today start 2`\n8. Finish a task: `today finish 2`\n9. Rinse and repeat. At the end of the day, run `today out` for a end of the day message you can paste again wherever you like.\n10. Run `today clear` to remove all done and cancelled tasks.\n\n## Installation\n\nExecutables for Mac and Linux are available as [releases](https://github.com/cloud8421/today/releases).\n\nDownload the file for your architecture and decompress the archive.\n\nThen `chmod +x today` and move the executable somewhere in your `$PATH`.\n\n## Managing the taskfile\n\nAs Today saves data in a single file, you can keep that in Dropbox or under version control.\n\nBy default, Today searches for a `tasks.json` file in the current directory, creating one if necessary. You can override this behaviour by passing a `-f|--taskfile` flag with the path you want to use or by setting a `TASKFILE` environment variable.\n\n## Command reference\n\n```\nTODAY - CLI Task Manager : Efficiently manage tasks from the command line\n\nUsage: today [-v|--version] [-f|--taskfile TASKFILE] COMMAND\n  TODAY - CLI Task Manager\n\nAvailable options:\n  -h,--help                Show this help text\n  -v,--version             Show version and exit.\n  -f,--taskfile TASKFILE   The path of the Taskfile to use. Can be replaced by a\n                           TASKFILE environment variable, which takes precedence\n                           over the option. (default: \"./tasks.json\")\n\nTask management:\n  list                     List all tasks. Can filter by context with\n                           --include-context/-i or --exclude-context/-e).\n  add                      Add a new task. Requires a text description and\n                           optionally takes a context option (--context or -c)\n                           to add the task under that context.\n  remove                   Removes an existing task by its ID.\n  start                    Start an existing task by its ID.\n  pause                    Pause an existing task by its ID.\n  finish                   Finishes a existing task by its ID, marking it as\n                           done.\n  cancel                   Cancel an existing task by its ID.\n  update                   Update an existing task with a new text description.\n  move                     Move an existing task under a new context.\n  reset-ids                Resets all task ids, restarting from 1 and ordering\n                           from oldest to newest.\n  clear                    Clear all done and cancelled tasks, permanently\n                           deleting them from the Taskfile.\n\nReporters:\n  in                       Generate a today message summary, including all\n                           pending and in progress tasks. Can filter by context\n                           with --include-context/-i or --exclude-context/-e).\n  out                      Generate a out for today message summary, including\n                           all in progress, done and cancelled tasks. Can filter\n                           by context with --include-context/-i or\n                           --exclude-context/-e).\n\nRefs management:\n  refs                     List all configured ref replacement rules.\n  set-ref                  Add a new ref replacement rule.\n  delete-ref               Delete an existing ref replacement rule by its repo.\n```\n\n## Autocompletion\n\nToday can generate autocompletion functions for Bash, ZSH and Fish shells by passing the appropriate flag.\n\n```\n# Bash\nsource \u003c(today --bash-completion-script `which today`)\n\n# ZSH\nsource \u003c(today --zsh-completion-script `which today`)\n\n# Fish\ntoday --fish-completion-script (which today) | source\n```\n\n## Development\n\nToday is written in Haskell and requires [stack](https://www.haskellstack.org).\n\nIt supports all standard `stack` commands, e.g. `test`, `run`, `build` or `install`.\n\nAfter cloning the repo, you can run `stack run -- list`, which will create an\nexample `tasks.json` file in the project directory and display all current\ntasks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloud8421%2Ftoday","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloud8421%2Ftoday","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloud8421%2Ftoday/lists"}