DEV Community

Cover image for 🎯 Build a Terminal Task Manager in Python with pyfiglet and rich!!!
Nishkarsh Pandey
Nishkarsh Pandey

Posted on

11 4 3 4 3

🎯 Build a Terminal Task Manager in Python with pyfiglet and rich!!!

Spice up your command-line apps with beautiful visuals and interactivity!

πŸš€ What You’ll Build
A fully functional task manager you can run in your terminal β€” complete with:

βœ… Add/delete tasks
βœ… Mark tasks as complete
βœ… Colorful ASCII headers
βœ… Richly styled tables
βœ… Interactive CLI menus

All using Python and a couple of lesser-known but super cool libraries!

🧰 What You’ll Need
Install these first:

pip install pyfiglet rich

Enter fullscreen mode Exit fullscreen mode

πŸ’‘ Why This Is Fun
CLI apps often feel dry β€” but throw in some ASCII art and beautiful tables, and suddenly you’ll want to open your terminal. I use these techniques to stay motivated during long automation or data scraping runs β€” it adds a bit of flair!

πŸ§‘β€πŸ’» The Code: task_manager.py

import pyfiglet
from rich.console import Console
from rich.table import Table
from rich.prompt import Prompt
import sys

console = Console()
tasks = []

def show_banner():
    ascii_banner = pyfiglet.figlet_format("Task Manager")
    console.print(f"[bold cyan]{ascii_banner}[/bold cyan]")

def show_menu():
    console.print("\n[bold yellow]Options:[/bold yellow]")
    console.print("[1] View Tasks")
    console.print("[2] Add Task")
    console.print("[3] Complete Task")
    console.print("[4] Delete Task")
    console.print("[5] Exit")

def display_tasks():
    if not tasks:
        console.print("[italic]No tasks available.[/italic]")
        return
    table = Table(title="πŸ“‹ Your Tasks", show_lines=True)
    table.add_column("ID", style="dim")
    table.add_column("Task", style="cyan")
    table.add_column("Status", style="green")

    for idx, task in enumerate(tasks):
        table.add_row(str(idx), task["name"], task["status"])

    console.print(table)

def add_task():
    name = Prompt.ask("Enter task name")
    tasks.append({"name": name, "status": "Pending"})
    console.print("[green]Task added![/green]")

def complete_task():
    display_tasks()
    index = Prompt.ask("Enter task ID to complete")
    try:
        tasks[int(index)]["status"] = "βœ… Completed"
        console.print("[green]Task marked as completed![/green]")
    except (IndexError, ValueError):
        console.print("[red]Invalid task ID![/red]")

def delete_task():
    display_tasks()
    index = Prompt.ask("Enter task ID to delete")
    try:
        deleted = tasks.pop(int(index))
        console.print(f"[red]Deleted:[/red] {deleted['name']}")
    except (IndexError, ValueError):
        console.print("[red]Invalid task ID![/red]")

def main():
    show_banner()
    while True:
        show_menu()
        choice = Prompt.ask("Choose an option", choices=["1", "2", "3", "4", "5"])
        if choice == "1":
            display_tasks()
        elif choice == "2":
            add_task()
        elif choice == "3":
            complete_task()
        elif choice == "4":
            delete_task()
        elif choice == "5":
            console.print("[bold cyan]Goodbye! πŸ‘‹[/bold cyan]")
            sys.exit()

if __name__ == "__main__":
    main()

Enter fullscreen mode Exit fullscreen mode

Output

Terminal1

Terminal2

πŸŽ‰ Wrap-Up

This is a great base for building more advanced terminal tools β€” think:

Save/load from JSON or a file.
Add due dates, priorities, tags.
Sort/filter/search tasks.
Keyboard shortcuts.

If you enjoyed this, try exploring more rich features like progress bars, panels, and live dashboards!

πŸ’¬ Over to You!
Have you built any cool terminal tools using Python? Got tips for making CLIs more interactive and fun? Drop a comment!

Heroku

Amplify your impact where it matters most β€” building exceptional apps.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (13)

Collapse
 
dotallio profile image
Dotallio β€’

Love how the banner and table styling instantly make this way more inviting - I always add a dash of color to my own CLI scripts too! Have you tried adding keyboard shortcuts for even faster task management?

Collapse
 
nish2005karsh profile image
Nishkarsh Pandey β€’

Thank you so much! I totally agreeβ€”color really livens up the CLI experience.
Adding keyboard shortcuts is a fantastic idea! It would definitely speed up task management and make the tool even more user-friendly. I’m planning to explore that next, maybe with libraries like keyboard or readchar for capturing key inputs.
Would love to hear if you have any favorite shortcuts or tips!

Collapse
 
javanteb23 profile image
Saint Thomas Brown β™Ÿ β€’

Great read, absolutely will be saving this for this books.

Collapse
 
nish2005karsh profile image
Nishkarsh Pandey β€’

Thanks a ton! πŸ™Œ Glad you found it useful. Hope it earns a cozy spot between your favorite bookmarks (or books πŸ˜‰). Let me know if you ever tweak it or build on it!

Collapse
 
madhurima_rawat profile image
Madhurima Rawat β€’

This looks so beautiful!

Collapse
 
nish2005karsh profile image
Nishkarsh Pandey β€’

Thank you so much, Madhurima! 😊
I'm really glad you liked it β€” making the terminal visually fun definitely boosts motivation during long sessions. I’m working on expanding this into a full-featured CLI dashboard next β€” stay tuned! πŸ’»πŸŒŸ

Collapse
 
nadeem_zia_257af7e986ffc6 profile image
nadeem zia β€’

Wow, amazing work

Collapse
 
nish2005karsh profile image
Nishkarsh Pandey β€’

Thanks !! Nadeem 😊.
I'm glad you like it.

Collapse
 
aidasaid profile image
Aida Said β€’

Looks amazing

Collapse
 
nish2005karsh profile image
Nishkarsh Pandey β€’

Thanks Aida 😊.

Collapse
 
nathan_tarbert profile image
Nathan Tarbert β€’

Pretty cool, I love spicing up boring terminal stuff - the colors just make me wanna use it more honestly.

Collapse
 
nish2005karsh profile image
Nishkarsh Pandey β€’

Thanks!! I totally agree -- colors really make the terminal more fun and engaging!

Collapse
 
jane_marcus_c20c721748243 profile image
Jane Marcus β€’

THE BLACK MIRROR IS POWERFUL. Who could believe that I would be rich someday? but Baba Powers made it possible with the black mirror which I purchased from him. Thanks to him because the black mirror reveals the secrets, unlock the power. I came across various testimonials which state how the black mirror has been of good and great help to them. I also contacted Baba Powers on his email; Babablackmirrors@gmail.com   to also experience it for myself. I am really happy to get the black mirror. Thank you Baba Powers for your special black mirror. You can also view his website and you will see amazing testimonies from people that he has helped. His website is; Babablackmirrorsofpowers.blogspot.com  I urge you now to contact him and you will never regret it. 

Some comments may only be visible to logged-in visitors. Sign in to view all comments.

Join the Runner H "AI Agent Prompting" Challenge: $10,000 in Prizes for 20 Winners!

Runner H is the AI agent you can delegate all your boring and repetitive tasks to - an autonomous agent that can use any tools you give it and complete full tasks from a single prompt.

Check out the challenge

DEV is bringing live events to the community. Dismiss if you're not interested. ❀️