You are building PawPal+, a Streamlit app that helps a pet owner plan care tasks for their pet.
A busy pet owner needs help staying consistent with pet care. They want an assistant that can:
- Track pet care tasks (walks, feeding, meds, enrichment, grooming, etc.)
- Consider constraints (time available, priority, owner preferences)
- Produce a daily plan and explain why it chose that plan
Your job is to design the system first (UML), then implement the logic in Python, then connect it to the Streamlit UI.
Your final app should:
- Let a user enter basic owner + pet info
- Let a user add/edit tasks (duration + priority at minimum)
- Generate a daily schedule/plan based on constraints and priorities
- Display the plan clearly (and ideally explain the reasoning)
- Include tests for the most important scheduling behaviors
PawPal+ includes several intelligent scheduling features to help pet owners manage care tasks effectively.
- Task Scheduling – Add tasks for each pet with a scheduled time and priority.
- Sorting by Time – Tasks are automatically sorted chronologically to create a clear daily plan.
- Recurring Tasks – Daily or weekly tasks automatically generate the next occurrence after completion.
- Conflict Detection – The scheduler detects when two tasks occur at the same time and shows a warning instead of crashing the program.
- Task Filtering – Tasks can be filtered by pet name or completion status.
- Interactive UI – The Streamlit interface allows users to easily add pets, create tasks, and generate schedules.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtPawPal+ includes several algorithmic improvements that make pet care planning more intelligent and organized.
The scheduler can:
- Sort tasks chronologically by scheduled time
- Filter tasks by pet name or completion status
- Automatically generate the next occurrence of recurring daily or weekly tasks
- Detect scheduling conflicts when two tasks occur at the same time and display a warning instead of stopping the program
These features were tested using the CLI demo script in main.py, which verifies sorting, filtering, recurrence handling, and conflict detection.
PawPal+ includes an automated test suite to verify that the scheduling system behaves correctly.
python -m pytest
### Suggested workflow
1. Read the scenario carefully and identify requirements and edge cases.
2. Draft a UML diagram (classes, attributes, methods, relationships).
3. Convert UML into Python class stubs (no logic yet).
4. Implement scheduling logic in small increments.
5. Add tests to verify key behaviors.
6. Connect your logic to the Streamlit UI in `app.py`.
7. Refine UML so it matches what you actually built.

