KanMingBan is a CLI-based Personal Kanban Board. It aims to provide a simple and lightweight solution for managing tasks. The name "KanMingBan" is derived from "看命板".
Currently it is written in C only using gcc libraries (binary is only 80kB); A CRUD program doesn't need to be any bigger than a megabyte.
The board is printed to stdout, If you want a TUI/GUI below are some options. I don't see a point in Vim bindings, but some of the alternatives below have them. You can change the aliases in the file commandParser.h to Vim bindings if you'd like
Not written in Rust because there should be no need for strict memory safety. Essentially there is one data structure and one user
- There is a rust kanban here
Not in Golang, there is no need for bounds checking and garbage collection for a simple application
- There is a Go kanban here
Not written in C++/Java because there is no need for their abstract data types, there is essentially only one type data structure
- There is a C++/Qt kanban here
Not in python/JS runtime because there is no need for just-in-time compilation for a CRUD application
- There is a python kanban here
Out of all alternatives, this cli kanban is the smallest and fastest.
-
Download the Tarball: Download the
tar.gz
file from relese tab -
Extract the Tarball:
- Use
tar
to extract the contents of the tarball. For example:tar -xzvf <kmb-verx.x>.tar.gz
- This command will extract the contents of the tarball into a directory.
- Use
-
Navigate to the Extracted Directory:
- Use
cd
to navigate into the directory where the contents were extracted. For example:cd <dir>
- Use
-
Install the Software:
-
Use
make install
to install the compiled software. This step usually requires superuser privileges (root). For example:./configure; sudo make install
-
-
Uninstall the Software:
-
Use
make uninstall
to uninstall the compiled software. This step usually requires superuser privileges (root). For example:./configure; sudo make uninstall
-
Known bug: spaces in task name breaks the data file. go to where binary is installed and fix kmb.dat view board:
kmb
add task:
kmb a "task1"
delete:
kmb d [task ID]
forward task to next column
kmb f [task ID]
regress task to prev column
kmb r [task ID]
- you can add the following to bashrc so that the board opens every time you spawn a window, you can also add an alias in bashrc. i like to use the letter 'a' because all the commands are near 'a' on the keyboard
alias a='kmb'
kmb
-
you can use grep, awk, less and other GNU utils to manipulate the output
-
if you like you have have a bash function that clears the terminal before printing the table
a() {
clear
kmb $1 $2
}
a
Draw tableRead DatafileStore Datafile on heap(Decided to parse from JSON-esq, Cross-compatibiliity)Parse Datafile (single call, fread to buffer, reduce syscalls if line by line)Display data file properlyArgument handlerAdd taskstasks have ID and descriptionRemove tasksPromote taskRegress taskDelete by IDPromote by IDRegress by IDAdd by task nameRemove from available IDAdd availiable ID (for deletion)add task by nameRecieve from stdin
- Store Avaliable numbers in heaps
- code quality refactor
- code performance refactor
- Memory leakfix
- drilldown description to task
- Add task in proper order
- Task lifecycle management
- Task throughput analysis
- Add more multiple columns
- Add multiple boards
- Edit task names
- edit description
KanMingBan is copylefted software, released under the GPL-3.0 license.