Skip to content

PyKanban is a terminal application for creating a simple kanban board or any table for any purpose uses cards in an awesome terminal view

License

Notifications You must be signed in to change notification settings

AmrMohamad/PyKanban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyKanban

Easy way to create kanban board in terminal

PyKanban-logo


Table of Contents


Description

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


What's New

Working on making the app faster and refactoring the code to be more maintainable


Screenshot

PyKanban-Program-Intro


Motivation

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


Features

  • Allow you to create a table with customized headers by coloring text and text backgrounds in the terminal.

    PyKanban-Program-Intro

  • Create Cards in a terminal. (the best feature)

    PyKanban-Program-Intro

  • 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


How to use

Installation

Step 1

git clone https://github.com/AmrMohamad/PyKanban.git

Step 2

python3 -m venv <type-virtual-environment-name-you-want>

Step 3

To activate virtual environment

source env/bin/activate

Step 4

The following command will install the packages according to the configuration file requirements.txt

pip install -r requirements.txt

Step 5

To Run PyKanban

python3 pykanban.py

Or press Run button in VS Code

run-button-vscode

Usage

After running, the first screen that appears is :

PyKanban-Program-Intro

we have here 3 options: View Tables, Create Table, Exit

Enter the option number

For View Tables

If you have created a table before, a list of saved tables will appear

list-of-tables

explaining the 'Create Table' and turn back to 'View Tables'

For Create Table

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:

naming-stage

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

set-columns

But, If you enter a hex value in the wrong way, it will ask you again about the values of the stage like that:

hex-value-error

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

ask-about-num-of-cards

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

set-0-for-stages

The Final result:

table-in-terminal

⚠️ The Colors of the header showing/rendering in the terminal depend on the type of terminal ⚠️

In VS Code terminal (depending on your settings)

table-in-terminal

In macOS terminal

table-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 😄

For Exit

It takes 5 seconds to exit from PyKanban to make sure everything its saved

count-to-exit

Back to View Tables option

demo-in-view-table-list

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

demo-table-with-options

and as we can see there is options:

view-table-options

Add a Card

For adding a new card, just type 1 and press enter then its starting create the new card

choose-add-a-card

and continue as the same before when add cards during creating the table

choose-add-a-card

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.

⚠️ Enter the name of the column as is it in the table

Input:

Which Column do you want to put the Card in? => Done!

table-after-added-a-card

Move a Card

For moving a card, just type 2 and press enter

move-a-card

Then type the Title of Card that you want to move

Input:

Enter the Title of Card => Task 1

PyKanban-logo
The title of card

Then Enter the column name where you want to put the card

⚠️ Enter the name of the column as is it in the table

Input:

Which Column do you want to put the Card in? => InActive

move-a-card-steps

Then it's moved

card-moved

Delete a Card

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

card-deleted

card-deleted-table

View History

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

history-list

Then :

view-history-result

Back to Main Screen

For select 'Back to Main Screen' turns you back to the main screen just typing 5 and pressing enter


Fundamentals and Technologies are used

Programming Fundamentals

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 and CSV
  • Regular Expressions
  • Type Hints
  • Unpacking
  • List Comprehensions and Dictionary Comprehensions
  • enumerate

Technologies

The Technologies are used to build PyKanban :

  • Python v3.10

  • 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.
  • For Units Test

    • 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.

Code Explanation

For not making the README file long than that this is the Code Explanation click here


License

License: MIT

Copyright © 2022, Amr Mohamad. Released under the MIT License.

About

PyKanban is a terminal application for creating a simple kanban board or any table for any purpose uses cards in an awesome terminal view

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages