Git Product home page Git Product logo

kantankanban's Introduction

Kantankanban ๐Ÿ“Œ

A Kanban CLI tool. Create boards, add cards to them or remove them.

Built in Python using Typer, it stores cards as JSON data, trivially exportable and usable in other platforms if desired.

Example workflow

If it's your first time using Kantankanban run

./setup.sh

to install all dependencies and set the KTKB_PATH env variable.

./ktkb use to-do
./ktkb init # assuming the board did not exist before
./ktkb add 'Walk the dog'
./ktkb add 'Feed the cat'
./ktkb list # see all tasks
./ktkb init -n done
./ktkb mv 0 --from 'to-do' --to done # Mark a task as done

You can also add ./ktkb to bin directory so it can be run from anywhere: cp ./ktkb /usr/local/bin/

How to Use ๐Ÿš€

๐ŸŒฑ Create a new board:

python -m kantankanban init -n $BOARD_NAME

๐Ÿ”Ž See all available boards:

python -m kantankanban list -n boards

๐Ÿ““ List all cards in a board:

python -m kantankanban list -n $BOARD_NAME (Yes, the board list is just another meta-board!)

This command will result in something like this:

board - Meals:

ID  | Title  
-------------
0   | Curry Masala
1   | Roasted Lamb
2   | Butter Chicken 
3   | Garlic Bread
-------------

Add -d 1 to see cards' creation dates. ๐Ÿ—“

๐ŸŒท Add a new card to a board:

python -m kantankanban add 'Card Title' -n $BOARD_NAME

๐Ÿ’€ Remove a card from a board:

python -m kantankanban remove $ID -n $BOARD_NAME (Get the ID by listing the cards. IDs are mutable)

The board name can be omitted in add, list and remove commands, effectively allowing for the tool to be used as a single-board kanban (with board: default) and making the commands less verbose.

๐Ÿฅพ Move a card from one board to another

python -m kantankanban mv $ID --src $SRC_BOARD_NAME --dst $DST_BOARD_NAME (Get the ID by listing the cards. IDs are mutable). Moves the card under $ID from source board to destination board.

This can effectively be used to e.g. track tasks with 3 boards: backlog, to-do, done. The order of the last two arguments is indiferent (Assembly convention possible but discouraged).

๐Ÿšฒ Make all commands apply to a certain board by default

python -m kantankanban use $BOARD_NAME or alias ./ktkb use $BOARD_NAME.

After using this command, all subsequent commands that take a -n $BOARD_NAME will assume you are using this one, unless otherwise specified. This reduces friction.

The ./ktkb command in this repo acts as an alias for python -m kantankanban, to reduce verbosity. It makes the user experience much more comfortable. E.g.: ./ktkb add 'red' -n colors

Advanced Feature: Tags

Just like Trello and other similar software, this program supports tags (/labels) in cards.

Add a card with tags:

python -m kantankanban add 'Card Title' -n $BOARD_NAME -t 'tag1, tag2,...'

Tags will not be visible by default (and a board without tags won't be affected). If present, you can see them by adding the --show-tags / -t flag to the list command.

For example:

python -m kantankanban list -n $BOARD_NAME

Results in:

ID  | Title  
-------------
0   | book 1
1   | book 2
2   | book 3
-------------

After adding -t:

python -m kantankanban list -n $BOARD_NAME -t

ID  | Tags            | Title  
-----------------------------
0   | English History | book 1
1   | Physics         | book 2
2   | Divination      | book 3
-----------------------------

This project is open to user suggestions and contributions. Any feedback will be appreciated!

Relevant commands

Activate environment:

source venv/bin/activate

Run tests: python -m pytest tests

Initial code and project structure inspired by RealPython.com.

See other projects by me on my blog.

kantankanban's People

Contributors

strikingloo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

hbcbh1999

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.