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.
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
- ✅ 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
| 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.
- Python 3.x installed (download here)
# 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.pyThat's it — no installs, no setup. Just run and go.
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!
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.jsonfile 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
- Working with Python's built-in
jsonmodule 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
- 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
coloramalibrary - Unit tests with
pytest
Samantha Joslin — Software Engineering student at SNHU, transitioning into tech from 8+ years in operations and hospitality leadership.
- 🌐 Portfolio (coming soon)
- 📧 smjoslin95@gmail.com
This project is part of my public learning journey. Feel free to fork it, build on it, or reach out if you have ideas!