Skip to content

Latest commit

 

History

History
135 lines (93 loc) · 3.55 KB

File metadata and controls

135 lines (93 loc) · 3.55 KB

python-task-tracker-README.md

📝 Python Task Tracker

A command-line task management app built with Python. Tasks are saved locally so they persist between sessions — close the app, come back later, your list is still there.

Python Status License


📸 Demo

Task Tracker
1. List tasks
2. Add task
3. Mark task as done
4. Delete task
5. Exit
Choose an option: 2

Enter task title: Finish AWS study notes
Task added.

Task Tracker
1. List tasks
...
Choose an option: 1

1. Finish AWS study notes - Pending
2. Update GitHub README - Done
3. Apply to junior dev roles - Pending

✨ Features

  • ✅ Add tasks with a title
  • 📋 View all tasks with status (Pending / Done)
  • ✔️ Mark tasks as complete
  • 🗑️ Delete tasks
  • 💾 Persistent storage using a local JSON file — tasks survive between sessions

🛠️ Tech Stack

Tool Purpose
Python 3 Core language
json module Data persistence (read/write tasks to file)
os module File existence checking

No external libraries required — runs on any machine with Python 3 installed.


🚀 Getting Started

Prerequisites

Run the app

# Clone the repo
git clone https://github.com/Smjoslin95/python-task-tracker.git

# Navigate into the folder
cd python-task-tracker

# Run the app
python task_tracker.py

That's it — no installs, no setup. Just run and go.


📁 Project Structure

python-task-tracker/
│
├── task_tracker.py   # Main application logic
├── tasks.json        # Auto-created on first run — stores your tasks
└── README.md         # You're reading it!

💡 How It Works

The app uses a simple menu-driven loop that keeps running until you choose to exit. Here's what happens under the hood:

  • On startup, it checks for an existing tasks.json file and loads any saved tasks
  • Each task is stored as a dictionary: {"title": "...", "done": false}
  • When you exit (option 5), all tasks are written back to tasks.json
  • If the file doesn't exist yet, it starts with an empty list

🧠 What I Learned Building This

  • Working with Python's built-in json module to read and write structured data
  • Using os.path.exists() to handle first-run file creation gracefully
  • Designing a clean menu loop with input validation and error handling
  • Thinking about user experience in a CLI context — clear prompts, helpful error messages
  • Applying OOP-adjacent thinking by separating concerns into focused functions

🔮 Future Improvements

  • Add due dates to tasks
  • Filter tasks by status (show only Pending or only Done)
  • Add task priority levels (High / Medium / Low)
  • Color-coded output using the colorama library
  • Unit tests with pytest

👩‍💻 About the Author

Samantha Joslin — Software Engineering student at SNHU, transitioning into tech from 8+ years in operations and hospitality leadership.


This project is part of my public learning journey. Feel free to fork it, build on it, or reach out if you have ideas!