← Back to Final Projects
Final ProjectIntermediate4-5 hours

Task Manager CLI Application

Build a complete command-line task management application with persistent storage!

📋 Project Overview

This project combines everything you've learned about functions, data structures, file I/O, and error handling to create a practical task management system. You'll implement features like adding tasks, setting priorities and due dates, searching, and saving data to JSON files.

🎯 Learning Objectives

  • Design and implement a data structure for tasks
  • Create a menu-driven command-line interface
  • Implement CRUD operations (Create, Read, Update, Delete)
  • Work with JSON file storage for data persistence
  • Handle user input validation and errors
  • Implement search and filter functionality
  • Generate statistics and reports

✨ Features to Implement

CoreMust-Have Features

  • Add new tasks with title and details
  • View all tasks in formatted display
  • Mark tasks as complete/incomplete
  • Delete tasks by ID
  • Save and load tasks from JSON file

EnhancedRecommended Features

  • Set and display due dates
  • Assign priority levels (High, Medium, Low)
  • Search tasks by keyword
  • View statistics (total, complete, pending)
  • Edit existing task details

BonusChallenge Features

  • Add categories or tags to tasks
  • Show overdue tasks with warnings
  • Sort tasks by various criteria
  • Export tasks to CSV format
  • Add color-coded terminal output

🗂️ Data Structure

Example of how to structure your data:

{
    "id": 1,
    "title": "Complete Python course",
    "status": "incomplete",
    "priority": "high",
    "due_date": "2025-12-31",
    "created": "2025-12-12"
}

🛠️ Implementation Guide

1

Set Up Data Storage

30 min

Create functions to load and save tasks from/to JSON file. Handle file not found errors.

💡 Hints
  • Use json module for file operations
  • Check if file exists before loading
  • Return empty list if file doesn't exist
  • Use indent=4 for readable JSON
2

Create Add Task Function

30 min

Implement function to add new tasks with user input validation.

💡 Hints
  • Get input for title, priority, due date
  • Generate unique ID for each task
  • Validate priority input
  • Add timestamp for when task was created
3

Create View Tasks Function

30 min

Display all tasks in a formatted, readable way.

💡 Hints
  • Check if tasks list is empty first
  • Use formatted strings for alignment
  • Add visual indicators (✅, ⭕)
  • Show priority with colors or icons
4

Implement Complete/Delete

30 min

Add functions to mark tasks complete and delete tasks.

💡 Hints
  • Find task by ID
  • Update status or remove from list
  • Save changes to file
  • Handle invalid IDs gracefully
5

Add Search and Filters

45 min

Implement search by keyword and filter by priority/status.

💡 Hints
  • Use string methods for searching
  • Filter using list comprehensions
  • Display filtered results
  • Handle no results found
6

Create Main Menu Loop

30 min

Build the main program loop with menu options.

💡 Hints
  • Use while True loop
  • Display numbered menu options
  • Use if-elif for option selection
  • Add exit option to break loop

✅ Testing Checklist

Make sure all these work before considering your project complete:

Add multiple tasks successfully
View all tasks displays correctly
Mark task as complete works
Delete task removes it
Tasks persist after program restart
Search finds correct tasks
Invalid input is handled gracefully
Statistics are calculated correctly

📊 Project Info

Difficulty

Intermediate

Estimated Time

4-5 hours

Prerequisites

Modules 1-6

💡 Tips for Success

  • Start with core features first
  • Test each function as you build
  • Use meaningful variable names
  • Handle errors gracefully
  • Add comments for complex logic
  • Take breaks when stuck