README.md (view raw)
1# todo.txt in Go
2
3`todo.txt-go` is a CLI tool written in Go for [todo.txt](https://todotxt.org/).
4It provides an interactive TUI developped with [Bubble Tea](https://github.com/charmbracelet/bubbletea/).
5
6
7
8## Install
9
10Ensure that you have a supported version of Go properly installed and setup.
11You can find the minimum required version of Go in the [go.mod](./go.mod) file.
12
13You can then install the latest release globally by running:
14
15```bash
16git clone https://5ika.ch/todo.txt-go.git
17cd todo-txt
18go install
19```
20
21`todo-txt` is now available in your CLI.
22
23## Config
24
25Tasks are stored in a `todo.txt` file in the `TODO_DIR` directory.
26By default, the `TODO_DIR` is `$HOME/.todo` but you can change it
27with two ways:
28
29- By setting `TODO_DIR` environment variable
30
31```bash
32export TODO_DIR=~/tasks
33todo-txt
34```
35
36- By using `-dir` flag
37
38```bash
39todo-txt -dir ~/tasks
40```
41
42## Keymaps
43
44- `A` or `+`: Add a new task
45- `D` or `-`: Remove focused task
46- `Enter`: Edit focused task
47- `Space`: Check/Uncheck focused task
48- `a`, `b`, `c`, `d`: Set priority level for focused task
49- `z`: Clear priority of focused task
50- `p`: Sort task by priority
51- `s`: Sort task by date
52- `u`: Clear done tasks (move them to *done.txt*)
53- `?`: Show full help
54
55## Features
56
57`todo-txt` is a TUI to manage todo list with [todo-txt format rules](https://github.com/todotxt/todo.txt)
58stored in a plain text file.
59
60### Due date
61
62Additionnaly, it handles due dates as a [custom *key:value* metadata](https://github.com/todotxt/todo.txt?tab=readme-ov-file#additional-file-format-definitions).
63Example:
64
65```
66(B) Review pull request #123 @work +code due:2025-09-05
67```
68
69### Reccurring task
70
71`todo-txt` handles reccuring task with flag `freq`.
72Example:
73
74```
75(C) Update servers freq:month due:2025-09-05
76```
77
78On check of this task, it will be duplicated with a new due date (`2025-10-05`).
79If it doesn't have a due date or if due date is in the past, the next due date is calculated from today's date.
80
81Available frequency values are:
82- `day`, `daily`
83- `week`, `weekly`
84- `month`, `monthly`
85- `quarter`, `quarterly`
86- `year`, `yearly`
87
88### Clear tasks history
89
90Done tasks are archived to *done.txt* file when `u` is entered.
91
92## Contribution
93
94Intrested by this project ? [Contact me](https://5ika.ch)
95
96## Ressources
97
98- <https://github.com/charmbracelet/bubbletea>
99- <https://github.com/1set/todotxt/blob/master/task.go>
100- <https://github.com/todotxt/todo.txt>
101- <https://github.com/freitass/todo.txt-vim>