Budget Buddy is a small Python budget tracker designed for Microsoft GH-300 demonstrations. It is intentionally a working but immature app: the happy path runs, starter tests pass, coverage is low, and realistic TODOs, bugs, security issues, and performance problems are left for GitHub Copilot to improve.
The goal is to show Copilot as more than autocomplete: codebase explanation, inline edits, agent mode, test generation, debugging, security review, refactoring, documentation, and PR-style summaries.
- Runnable app:
python main.py - Starter tests: 8 tests
- Current coverage target: about 30%
- Workshop goal: use Copilot to reach 90%+ coverage
- Intentional issues: documented in INTENTIONAL_ISSUES.md
- Trainer flow: documented in DEMO_SCRIPT.md
.\setup_demo.ps1
.\.venv\Scripts\Activate.ps1
python main.py
pytestIf PowerShell blocks script execution, run:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassBudget Buddy reads sample transactions from data/sample_transactions.csv, builds a simple monthly budget report, and logs:
- income
- expenses
- remaining budget
- net cash flow
- savings rate
- largest expense
- spending by category
- a paginated transaction table
| File | Purpose |
|---|---|
| main.py | Runnable demo app and report orchestration |
| calculator.py | Budget calculations with intentional edge-case bugs |
| data_processor.py | Transaction filtering, grouping, duplicate detection, and TODOs |
| file_handler.py | CSV/JSON file I/O with an intentional path traversal gap |
| data_table.py | Generic table helper used by the app |
| logger.py | Centralized logging utility |
| tests | Sparse starter tests for the coverage journey |
The trainer flow in DEMO_SCRIPT.md is aligned to the five course modules:
- Module 1 — Introduction: run
setup_demo.ps1andpython main.pyto frame the use case. - Module 2 — Exploring Features: Chat, Inline Chat, CLI, and prompts with context (security review of file handling).
- Module 3 — Developer Use Cases: generate, transform, optimize, document, and a DevOps beat (Dockerfile + CI).
- Module 4 — Building Unit Tests: the coverage journey from ~30% to 90%+.
- Module 5 — Advanced Capabilities: Agent Mode,
AGENT.md, Skills, MCP, and PR review/summary.
Reusable prompts live in .github/prompts:
generate-tests.prompt.mdsecurity-review.prompt.mdrefactor-performance.prompt.mdagent-feature.prompt.mddevops-snippet.prompt.mdpr-summary.prompt.md
Module 5 showcases how Copilot follows project-level guidance:
- AGENT.md — operating manual for agents in this repo.
- .github/copilot-instructions.md — repo-wide rules.
- .github/skills — task playbooks (
SKILL.md), e.g. adding a budget report section.
python main.py
pytest
pytest --cov=. --cov-report=term-missingDuring the demo, after Copilot generates enough tests and fixes, change the coverage threshold in pytest.ini from 30 to 90 and rerun pytest.
This repository is intentionally not production-ready. Do not remove the TODOs and bugs from the starter state unless you also update INTENTIONAL_ISSUES.md and DEMO_SCRIPT.md.