Easy way to create kanban board in terminal
- Description
- What's New
- Motivation
- Features
- How to use
- Fundamentals and Technologies are used
- Code
- License
PyKanban is a terminal application for creating a simple kanban board or any table for any purpose containing cards and viewing the table on the awesome black screen of the terminal that most developers like it
Working on making the app faster and refactoring the code to be more maintainable
First, as is common among developers, it's awesome for using terminal applications. And I found all applications that help us for creating tables for organizing our tasks use GUI. So, I found it will be great if I try to develop a simple application that uses a terminal. Second, it's my final project for CS50’s Introduction to Programming with Python
-
Allow you to create a table with customized headers by coloring text and text backgrounds in the terminal.
-
Create Cards in a terminal. (the best feature)
-
Easy move a card and put it on any column of the table
-
Add a card or delete it after creating the table
-
Viewing the history of edited table
git clone https://github.com/AmrMohamad/PyKanban.git
python3 -m venv <type-virtual-environment-name-you-want>
To activate virtual environment
source env/bin/activate
The following command will install the packages according to the configuration file requirements.txt
pip install -r requirements.txt
To Run PyKanban
python3 pykanban.py
Or press Run button in VS Code
After running, the first screen that appears is :
we have here 3 options: View Tables, Create Table, Exit
Enter the option number
If you have created a table before, a list of saved tables will appear
explaining the 'Create Table' and turn back to 'View Tables'
It will ask you for the name of the new table to create a new folder in ./pykanban/data/
folder containing all new table data and the table be saved in a CSV file like this latest.csv
.
After that, it starts asking you for the details of the table
Input:
Number of stages => 4
It will ask about the Name of each stage or header and their colors. When come to choosing the colors they must be in Hex values like that:
If you enter color values correctly, it continues in the same way until the last (4th) stage because we the enter Number of stages => 4
But, If you enter a hex value in the wrong way, it will ask you again about the values of the stage like that:
After setting the headers/columns/stages name of the table, you can add cards to Stages by asking about the number of cards per stage
Input:
How many cards do you want? 2
And depending on how many cards you choose to add, it will start asking you about each card's details like that:
For 1st Card <====== First card start here
Enter the Title of Card, It's one title only !
==> Task 1
How many sub-titles do you want to add ? => 2
Enter the name of each sub-title
>>> Description
>>> Comment
Enter the content of each sub-title, The maximum is 244 characters per paragraph !
Do not hit enter for new line,
We handle it automatically
For Description :
>>> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Do not hit enter for new line,
We handle it automatically
For Comment :
>>> It should be ended on 7 Dec 2022 <====== First card end here
For 2nd Card <====== Second card start here
Enter the Title of Card, It's one title only !
==>
And so on, the same way with the second card.
After you finished 1st Stage, it will ask about other stages, and it's up to you, you can add cards now or later
The Final result:
In VS Code terminal (depending on your settings)
In macOS terminal
The limitations are:
-
The limited Number per Table of Stages is:
- The Maximum Stages is 5
- The Minimum Stages is 2
-
No limit to Cards to Stage
-
Sub-titles per card:
- At least 1 sub-title
- the maximum is 5 sub-titles
-
the content of each sub-title is limited to 244 characters
Now you have created a Kanban board in the terminal with PyKanban 😄
It takes 5 seconds to exit from PyKanban to make sure everything its saved
now after backing to main screen of PyKanban and choosing View Tables we can see 1: Dome
table
Enter the number of table in list. for example,
Input:
Enter Number of Table to Open: 1
Now we can re-open the table that we created before
and as we can see there is options:
For adding a new card, just type 1 and press enter then its starting create the new card
and continue as the same before when add cards during creating the table
after adding the card information you want to add, it wll ask you where you want to add the card. let's say the task is done but if you forget to create a card for it, then we need to put the card in the Done!
column.
Input:
Which Column do you want to put the Card in? => Done!
For moving a card, just type 2 and press enter
Then type the Title of Card that you want to move
Input:
Enter the Title of Card => Task 1
Then Enter the column name where you want to put the card
Input:
Which Column do you want to put the Card in? => InActive
Then it's moved
let's say some modifications happened to the project so you do not need the 'Task 2' Card and want to delete it
Select 'Delete a Card' by just typing 3 and pressing enter
Then enter the Card name
Input:
Enter the Title of Card => Task 2
For some reasons you need to remember or view old version/copy of the table
Select 'View History' by just typing 4 and pressing enter
It will view to you the history list and you will select which date you want to view by typing the number from the list
Then :
For select 'Back to Main Screen' turns you back to the main screen just typing 5 and pressing enter
The Fundamentals are used to build PyKanban :
- Libraries & modules
- Constants
- Class Methods
- Decorators
- raise error message
def
for functions- match statements
- Exceptions
- Unit Tests
- File I/O using
open
,with
andCSV
- Regular Expressions
- Type Hints
- Unpacking
- List Comprehensions and Dictionary Comprehensions
enumerate
The Technologies are used to build PyKanban :
-
Modules are used:
- textwrap - This library is used to format text by wrapping it according to specified line widths.
- tabulate 0.9.0 - This library is used to convert data into formatted tables.
- The tabulate package is used to display tables on the terminal screen.
- colored 1.4.4 - This library is used to add colors to the text output in the terminal.
- The colored package is used to add color to the text on the screen.
- inflect 6.0.2 - This library is used to perform various operations on words and numbers, such as pluralization and singularization.
- The inflect package is used to convert numbers to their text representation (e.g. "1" to "one").
- csv - This library is used to read and write CSV (Comma Separated Values) files.
- os - This library is used to perform various operations on files and directories, such as renaming and deleting files.
- shutil - This library is used to perform high-level operations on files and directories, such as copying and moving files.
- sys - This library is used to access system-specific parameters and functions, such as command line arguments and exit codes.
- re - This library is used to work with regular expressions, which are patterns used to match and manipulate strings.
- time - This library is used to perform time-related operations, such as measuring time intervals and sleeping.
- datetime - This library is used to perform operations on dates and times, such as calculating the difference between two dates.
-
- pytest 7.2.0 - is a unit testing framework for Python. It is used to write and run tests for Python code. Pytest makes it easy to write and run tests for your Python code, and it has a number of useful features that make it a powerful tool for testing. Pytest is particularly useful for ensuring that your code is working as expected, and it can be used to catch and diagnose bugs and other issues in your code. Overall, pytest is a valuable tool for ensuring the quality and reliability of your Python code.
For not making the README file long than that this is the Code Explanation click here
Copyright © 2022, Amr Mohamad. Released under the MIT License.