Mailroom is an object-oriented Python application that manages a donor database for a charitable organization. It allows users to track donations, generate reports, and send thank-you messages — all from the command line.
This version reflects a refactored final implementation from a multi-week learning project. It emphasizes clean class design, test coverage, and modular structure.
- Add new donors and donations
- Automatically update donor statistics (total, count, average)
- Generate reports summarizing donor activity
- Send thank-you notes
- Deactivate donors
- Input validation
- Pagination logic (stretch feature)
mailroom/ # Main application code
├── __init__.py
├── mailroom_model.py
├── main.py
└── templates.py # Thank-you note templates
tests/ # Pytest unit tests
└── test_mailroom_model.py
README.md # This file
pyproject.toml # Project metadata & test config
.gitignore # Ignored files and folders- Python 3.12+
- pip
This project currently has no external dependencies. If future requirements are added, they’ll be managed via pyproject.toml.
cd mailroom
pytestOr run explicitly from the tests/ directory:
cd tests
pytest test_mailroom_model.py| Email | First Name | Last Name | Total Given | Gifts | Average Gift |
|------------------|------------|-----------|-------------|-------|----------------|
| test@donor.com | Test | Donor | $300.00 | 3 | $100.00 |
This project is licensed under the MIT License. See the LICENSE file for details.
Uriah McKinney
🔗 GitHub: umckinney