Skip to content

sagarikapatha/ai110-module2show-pawpal-starter

 
 

Repository files navigation

PawPal+ (Module 2 Project)

You are building PawPal+, a Streamlit app that helps a pet owner plan care tasks for their pet.

Scenario

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.

What you will build

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

Features

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.

📸 Demo

PawPal Streamlit App UML Diagram

Getting started

Setup

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt

Smarter Scheduling

PawPal+ 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.

Testing PawPal+

PawPal+ includes an automated test suite to verify that the scheduling system behaves correctly.

Run the tests

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.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%