PawPal+ is a Streamlit app for planning pet care tasks across multiple owners and pets. It builds a daily schedule using priority and time constraints, explains scheduling decisions, and persists data between runs.
- Multi-owner support with separate pet/task data per owner
- Pet management per owner (add pets, view pet list)
- Task management with:
- description
- duration
- start time
- priority level (
Low,Medium,High) - recurrence (
daily,weekly,monthly) - completion status
- due date
- Daily schedule generation with explanation output
- Task completion workflow with recurrence handling
- JSON persistence (
data.json) for owners, pets, and tasks
- Priority-based scheduling: tasks are ordered by priority first (
High > Medium > Low) - Time-based tiebreaker: tasks with same priority are ordered by earlier start time
- Time-budget filtering: tasks that exceed remaining daily minutes are skipped
- Completion filtering: completed tasks are excluded from newly generated plans
- Conflict warnings: overlapping task windows are detected and reported
- Recurrence generation: completing a
dailyorweeklytask auto-creates the next occurrence
When you click Generate schedule, the scheduler:
- Collects all tasks for the active owner.
- Sorts tasks by priority, then by start time.
- Iterates through tasks and schedules only those that fit remaining daily time.
- Produces a human-readable explanation for each scheduled or skipped task.
- Runs conflict detection to warn about overlapping tasks.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.pyIf tests import pawpal_system from project root, run:
PYTHONPATH=. .venv/bin/pytest -qTo run a single test:
PYTHONPATH=. .venv/bin/pytest -q test/test_pawpal.py::test_ordering_by_priority_then_duration- Data is saved to
data.json - Save occurs after owner/pet/task updates and task completion events
- Data is loaded automatically on app startup
app.py: Streamlit UI and state handlingpawpal_system.py: domain model (Owner,Pet,Task) andSchedulertest/test_pawpal.py: pytest coverage for core scheduling/model behaviordata.json: persisted app data

