- Go 100%
| assets | ||
| ktask | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| ktask.go | ||
| LICENSE | ||
| README.md | ||
ktask
Ktask is a kanban based todo-list using a plain-text format to store data and use a TUI (terminal user interface) to show the kanban board.
Plain-text format
The plain-text format (as well as the parsing of it) is heavily inspired by the klog project.
Essentially, it consists of a list of stages (for the kanban board). Each of
these stages then contain a list of task items in that stage. Each item has 3
properties: createdAt (when the entry was created), modifiedAt (when the
entry was last modified, aka moved to another stage) and title. These fields
must be present in that order. Similar to klog, the title might contain tags
starting with #, potentially storing a value. The first tag in the title will
be interpreted as the project to which this item belongs to.
Example
todo
2024-01-02 2024-02-01 buy milk #grocery
2024-01-10 2024-02-11 Send out weekly newsletter #work=social
done
2023-12-01 2024-01-01 celebrate new-year #friends
You may notice this example only consists of two stages instead the classical three stages. This stresses, the file format does not impose any restrictions on the order, number and name of the stages used.
Project state
This project is still in a early stage. It can already be used (I'm doing so) but it's not well tested and there might be bugs.
For open issues / planned features, see the issues page.
Although I want to avoid, there might be breaking changes (especially because of the very early stage of the project). In order to get notified if there are any, subscribe to this issue.
Arguments
Kanban View
with -t/--tags you can pre-filter the set of entries shown in the kanban
view. You can use this option multiple times to show entries with different
tags. If you are using tags of the form #key=value, filtering on #key will
also show the entries that use the #key tag with a value assigned to. Also
note that you don't have to (but can) include the leading #.
-T/--no-tags is just the oposite (hide the specified tags). Hiding -T)
always takes precedence over showing (-t)
Example: ktask kanban -t grocery --tags work assets/demo.ktask
Acknowledgements
The basic idea for this project was greatly inspired by the charm tutorial
projects taskcli and
kancli.
Thinking about data storage, the thought was usually there should not be that much data (otherwise the board will be too full anyhow) so a plain-text file should be enough (in contrast to a full blown database) while offering the benefits of easy introspection and version control (if desired).
This lead to the process of thinking about the format. Since klog has a similar approach (but for time tracking) it only was logical to adapt its format and if so also make use of its general parsing logic.