Files
032-birthday-wisher/docs/milestones/mil-001-project-setup.md
T
2026-10-17 15:11:26 +08:00

3.5 KiB

MIL-001 Project Setup

Metadata

Key Value
ID MIL-001
CrossReference BC-001, SA-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-10-17 Accepted Jens Tirsvad Nielsen S01 Initial version; reviewed in RC-003 (Go) 052008f

Purpose

Decide whether the project skeleton is ready to hold code: configuration, tooling, ignore rules and repository metadata are in place and reviewed.

Deliverable

A Python 3.13+ project skeleton: pyproject.toml with pytest and no runtime dependencies, .gitignore, .env.example, src/ and tests/ folders, constants.py, Doxyfile, .venv instructions, the assignment data files, and the repository description and topics on the git host. One pull request.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 python -m pip install -e .[dev] succeeds in a fresh .venv and python -m pytest runs (a smoke test passes) Go No-Go
2 pyproject.toml requires Python >=3.13 and lists no runtime dependencies Go No-Go
3 .gitignore ignores .venv/, __pycache__/ and .env; .env is not tracked Go No-Go
4 Doxyfile exists and doxygen Doxyfile runs without error (or the gap is recorded) Go No-Go
5 Repository description and topics are set on the git host (checked through the API) Go No-Go

Dependencies

Depends on Reason
none First milestone

Traceability

Business Case objective / KPI / user story Reference
Objective 3 (tests), objective 5 (publish) BC-001
S01, S03 concerns SA-001

Ownership

Role Stakeholder ID (SA)
Owner S01
Approving reviewer S01

Target Date

2026-10-18 - within the schedule of the Business Case constraints.

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Configure pyproject and tooling Create pyproject.toml (requires-python >=3.13, no runtime dependencies, an optional dev extra with pytest, pytest configuration with pythonpath = src), a Python .gitignore that also ignores .env, and .env.example listing GMAIL_TOKEN. The token in .env is for personal use only and is never read by tests. No
2 Create src and tests layout with constants.py Create the src/birthday_wisher/ package with constants.py (file names, [NAME] placeholder, SMTP host and port, subject, environment variable names) and a tests/ folder with a smoke test, so later work has a place to land. No
3 Add assignment data files Add birthdays.csv (header name,email,year,month,day, dummy rows only, never a real address) and letter_templates/letter_1.txt to letter_3.txt from the course starter, keeping the [NAME] placeholder. No
4 Add Doxyfile Add a Doxyfile that documents src/ from the Doxygen comments and writes its output to an ignored docs/doxygen/ folder. No
5 Set repository description and topics Set the description and topics on the git host through its API, using GITEA_TOKEN read from the environment or .env without printing it. Stop and report if the token is missing or rejected. No