02. Milestones & Issues
We will use these milestones and issues for the development phase of the workshop.
Understanding the Project Board
Before creating issues, let's understand the tool we are using. A GitHub Project Board is a project management tool that helps teams organize and track work. It typically follows a Kanban style, where tasks move through different stages (e.g., Todo, In Progress, Done).
The CSE120 Template
You have initialized your project using the CSE120 Project Board Template. This template is customized for our course workflow and includes specific fields you should use:
- Status: The current state of the ticket (e.g.,
Todo,In Progress,Done). - Sub-issue progress: Tracks the completion of sub-tasks within parent issues.
- Iteration: Aligns tasks with course dates (Labs). This helps you plan what needs to be done each week.
- Hours: A field for you to report the actual time spent on a task. This is useful for your own tracking and for team reporting.
How to Use the Board
- Views: The template comes with pre-configured views (e.g., "Board", "Table"). Use "Board" for a visual overview of status and "Table" for detailed planning or editing multiple items at once.
- Filters: You can filter by assignee, label, or iteration to see only what is relevant to you or the current week.
- Meeting Minutes: Use the filtered views during your weekly team meetings. Reviewing
In ProgressandTodoitems for the current iteration is a great way to structure your meeting minutes and status reports.
Tasks
2.1. Create the milestones in the GitHub repository
2.2. Create issues for each milestone using appropriate templates
2.3. Create a project board and link the issues
2.4. Assign issues
Milestone 1: Project Scaffolding
This milestone focuses on setting up the initial project structure, including a FastAPI backend with a health check endpoint, basic tests, CI/CD integration, and Docker support.
Issue 1 (Task) - Update README
Summary:
Update README.md with project details.
Proposed Implementation:
Update README.md with project name, team members, description, technologies used, and setup instructions.
Issue 2 (Feature Request) - Initial FastAPI App
Summary:
Create initial FastAPI app with a single /health endpoint for uptime checks.
- Motivation / Rationale:
Establishes an executable service anchor for CI, tests, future UI integration.
Proposed Implementation:
- [ ] Add `app/main.py` with FastAPI instance `Average Workshop API`;
- [ ] `/health` returns {"status":"ok"}. No extra routes.
- [ ] Service runs `uvicorn app.main:app` and curl returns expected JSON.
Issue 3 (Task) - Add first tests
Objective:
Add pytest ensuring `/health` returns 200 + exact JSON.
Details / Subtasks:
- [ ] Create `tests/test_health.py`
- [ ] Use TestClient
- [ ] Assert status + JSON
Acceptance Criteria:
Test passes locally; fails if contract changes.
Issue 4 (Feature Request) - Add NiceGUI Shell
Summary:
Add NiceGUI shell with the website title and subtitle at root page.
Motivation / Rationale:
Establish UI integration boundary before adding logic.
Proposed Implementation:
Add NiceGUI to the project, create a main page with a title and subtitle using NiceGUI components.
Issue 5 (Task) - Introduce CI and Docker
Objective:
Introduce CI workflow and Dockerfile for baseline.
Details / Subtasks:
- [ ] Add GitHub Actions workflow (lint, type, test) on PR
- [ ] Add minimal Dockerfile (python:3.11-slim, uv install, run uvicorn)
- [ ] Add GitHub Actions job to build and publish Docker image
Acceptance Criteria:
- [ ] CI passes on PR
- [ ] Docker image builds successfully
Milestone 2: Average Calculation
This milestone focuses on implementing the core functionality of calculating the average of user-provided numeric tokens.
Issue 6 (Feature Request) - Average Calculation Form
Summary:
Add form for users to input comma/space separated numeric tokens, compute average.
Motivation / Rationale:
Introduces interactive computation; core learning objective.
Proposed Implementation:
Parse tokens by splitting on commas then spaces; convert to float; display mean; no non-numeric guard yet.
Useful Resources
GitHub Issues & Project Management
- About Milestones - Organize issues into time-based collections
- Creating and Editing Issues - Track tasks, bugs, and feature requests
- Issue Templates - Standardize issue creation
- Linking Issues to Pull Requests - Connect work to issues
- GitHub Projects - Kanban-style project boards
Project Management Best Practices
- Writing Good Issue Descriptions - Clear, actionable issue writing
- Agile Project Management - Iterative development methodology
- Issue Labels Best Practices - Effective labeling strategies