A lightweight, modular command-line To-Do List application built using Python, designed with testability in mind and integrated with a full CI/CD pipeline using GitHub Actions.
📦 Designed to simulate real-world DevOps practices in an educational context.
- ✅ Object-oriented design with simple interface
- 🔁 Modular, extensible Python code (no frameworks required)
- 🧪 Full unit test coverage with
pytest - ⚙️ CI/CD pipeline using GitHub Actions (auto runs tests on push/PR)
- 📂 Clean project structure following best practices
- 🪄 Easily expandable (e.g., add persistence, mark tasks as done, CLI parser)
- Add tasks to a to-do list
- Remove tasks from the list
- View current tasks
- Unit tested with
pytest - Automated testing with GitHub Actions
| Layer | Tools Used |
|---|---|
| Language | Python 3.10+ |
| Testing | Pytest |
| CI/CD | GitHub Actions |
| Dependency Mgmt | requirements.txt |
| Workflow File | YAML (.github/workflows) |
todo-app/ │ ├── todo.py # Main to-do app logic ├── test_todo.py # Unit tests ├── .github/ │ └── workflows/ │ └── ci.yml # GitHub Actions workflow ├── requirements.txt # Dependencies └── README.md
git clone https://github.com/your-username/SimpleToDoList.git
cd SimpleToDoListpython -m venv .venv
.venv\Scripts\activate # For Windows PowerShellpip install -r requirements.txtpytestThis project uses GitHub Actions to automatically:
Set up Python
Install dependencies
Run tests on every push and pull request
Check the .github/workflows/ci.yml file for the full configuration.
On every push or pull request, GitHub Actions:
- Checks out the repo
- Sets up Python 3.10
- Installs dependencies
- Runs
pytestfor all unit tests
- Add task (
test_add_task) - Reject empty task (
test_add_empty_task) - Remove existing task
- Reject removal of missing task
- Confirm correct task order
- Case sensitivity check
🙋♀️ Author Harshali Jagtap - K00265900