Skip to content

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 Progress and Todo items 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

Project Management Best Practices