{"id":16355819,"url":"https://github.com/lyz-code/taskban","last_synced_at":"2025-10-12T18:20:30.822Z","repository":{"id":101516275,"uuid":"119747626","full_name":"lyz-code/taskban","owner":"lyz-code","description":"Taskwarrior based program to manage your kanban workflow","archived":false,"fork":false,"pushed_at":"2018-07-04T10:37:30.000Z","size":206,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-27T10:59:25.098Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lyz-code.png","metadata":{"files":{"readme":"README.md","changelog":"History.md","contributing":null,"funding":null,"license":"COPYING","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-01-31T21:46:46.000Z","updated_at":"2025-04-21T19:55:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"93e18abe-1a32-45dd-9632-fea8c2190804","html_url":"https://github.com/lyz-code/taskban","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/lyz-code/taskban","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyz-code%2Ftaskban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyz-code%2Ftaskban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyz-code%2Ftaskban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyz-code%2Ftaskban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lyz-code","download_url":"https://codeload.github.com/lyz-code/taskban/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyz-code%2Ftaskban/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279012507,"owners_count":26085133,"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","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"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":[],"created_at":"2024-10-11T01:41:52.280Z","updated_at":"2025-10-12T18:20:30.805Z","avatar_url":"https://github.com/lyz-code.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Taskban\n\nThe program will be used for:\n* Sprint planning\n* Task mangling\n* Retro reports\n\nIt works in combination with [Taskwarrior](taskwarrior.org) so it won't try to\nreplace it.\n\n## Install\n\nClone the repository and install it\n\n```bash\ngit clone https://github.com/lyz-code/taskban\ncd taskban\npip install -r requirements.txt\npython3 setup.py install\n```\n\nYou should use the following UDAs in your taskwarrior tasks\n* `est`: Estimate of the task\n* `pm`: The state of the task\n\nMy suggestion would be to add this lines to your `taskrc`\n\n```\nuda.pm.type=string\nuda.pm.label=Kanban\nuda.pm.values=todo,doing,done,blocked,test,backlog\nuda.pm.default=backlog\n\nuda.est.type=numeric\nuda.est.label=Estimate\n```\n\nIf you have a lot of activity in taskwarrior, the parsing of the history might\nbe heavy, so I also suggest to use the history parsing cache, so add to your\n`taskrc`\n\n```\nhistory.cache=15d\nhistory.cache.location=history.cache\n```\n\n## Test\n\n```bash\npip install -r requirements-tests.txt\npytest\n```\n\n## Retro reports\n\n### Ocupation reports\n\nThis reports will give the status of the Kanban/scrum board for a specified period of\ntime with the total time spent in each task:\n\nIf not specified the `period` flag it will take the last day modified tasks.\n\n```bash\ntaskban ocupation\n```\n\nThe `period` flag must be a taskwarrior time compatible string, for example if\nwe want to see the information of the tasks modified last week we could use\n\n```bash\ntaskban ocupation -p 7d\n```\n\nOr\n\n```bash\ntaskban ocupation -p 1w\n```\n\nYou can also use fixed dates\n\n```bash\ntaskban ocupation -p 1984-01-01\n```\n\nIf you want to also show the backlog use the `-b` flag\n\nIf you want to also show the tasks that have changed but have an active time of\n0 use the `-i` flag.\n\nThis report will give you the next information\n* *ID*: Task id, if it's completed it will show 0\n* *Est*: The number of hours estimated to complete the task\n* *Active*: The active time of the task in the specified period\n* *Progress*: The percent of progress, between the total time spent in the task\n  and the estimate\n* *Description*: Description of the task\n\n## Refinement reports\n\nWith this mode we'll checkout the backlog, order it and refine it for the next\nsprint.\n\nTaskban will be save the status of the refinement in a file in the share\ndirectory. So you can continue the refinement whenever you like.\n\n`taskban refine` will start the refinement process, and it will give you a `task\npro:{{ item }} list` for the first project, If you execute again `taskban refine` it\nwill give you the same `taskban pro:{{ item }} list`.\n\nWith the `next` and `prev` methods you'll navigate through the projects. Keep in\nmind that `my-project` is the parent of `my-project.my-subproject` and\n`my-subproject` is the child of `my-project`. Also `my-project` and\n`my-other-project` are siblings.\n\nWith those ideas in mind you can use the following commands:\n\n* `taskban refine next parent`: will jump to the next parent\n* `taskban refine next child`: will jump to the next child\n* `taskban refine next sibling`: will jump to the next sibling\n* `taskban refine prev parent`: will jump to the previous parent\n* `taskban refine prev child`: will jump to the previous child\n* `taskban refine prev sibling`: will jump to the previous sibling\n\nIf you execute `taskban refine next` it will try to jump to the next child, if\nit doesn't exist it will try to jump to the next sibling, if it doesn't exist it\nwill go to the next parent. Same happens in reverse if you use `taskban refine\nprev`.\n\nLast but not least, if you want to jump to a specific project execute `taskban\nrefine jump {{ project }}`\n\n## Planning reports\n\nIn the last sprint planning I saw that the task ordering through the ov and pri of\nproject, subproject and task is not enough, sometimes you need to modify the\norder of some tasks without affecting the rest of them.\n\nWe needed a tool to order the items in the backlog.\n\nYou can use `taskban plan {{ task_id }} up` or `taskban plan {{ task_id }} down`\nto move the tasks inside their `pm` status.\n\nBe careful to keep an eye on the ord values of the tasks because it might be\nused against the ov and pri values and end up doing things not so important.\n\nYou can move tasks only on a project with the `--project {{ project}}` flag, or\nyou can specify the task status with `--task_status {{ task_status }}`, that\nneeds to match the `pm` Taskwarrior UDA.\n\nIf the desired `ord` doesn't exist in the config, it will create it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyz-code%2Ftaskban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flyz-code%2Ftaskban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyz-code%2Ftaskban/lists"}