TirSystem/git-workflows: Publish wiki / publish-wiki (push) Skipped
TirSystem/git-workflows: Sync GitHub mirror metadata / sync-metadata (push) Skipped
TirSystem/git-workflows: Publish accepted milestones / publish (push) Skipped
TirSystem/git-workflows: OpenGrep / opengrep (push) Skipped
TirSystem/git-workflows: Validate / validate (push) Skipped
TirSystem/git-workflows: Validate / validate (pull_request) Successful in 38s
TirSystem/git-workflows: Release / release (pull_request) Successful in 22s
TirSystem/git-workflows: OpenGrep / opengrep (pull_request) Failing after 5m17s
106 lines
5.9 KiB
Markdown
106 lines
5.9 KiB
Markdown
# Project Plan: Flask Backend Basics
|
|
|
|
## Metadata
|
|
| Key | Value |
|
|
| --- | --- |
|
|
| ID | PP-001 |
|
|
| CrossReference | [BC-001], [SA-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005] |
|
|
| Language | en |
|
|
| Domain | it |
|
|
|
|
## Version History
|
|
| Date | Status | Author | Reviewer | Change | Commit |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| 2026-11-06 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [73a5a95] |
|
|
| 2026-11-06 | Accepted | Jens Tirsvad Nielsen | S01 | Link each gateway to its synced Gitea milestone | [8cd73cc] |
|
|
|
|
---
|
|
|
|
## Purpose
|
|
|
|
Schedule the five gateways that turn the Day 54 lectures into a tested, documented repository, within the Business Case constraint of one branch and pull request per milestone.
|
|
|
|
## Planning Assumptions
|
|
|
|
- Work starts 2026-11-06 and ends by 2026-11-10; one gateway per day or less.
|
|
- Each gateway is one branch and one pull request that closes its issues (SA-001 CM-001).
|
|
- The reviewer for every gateway is S01; in autonomous mode the AI acts as stand-in for S01 and records `Mode: autonomous, not independent`.
|
|
- PO language is English, domain IT; the wiki exists in English, Danish and Bahasa Malaysia.
|
|
- Sources: the dates and the one-pull-request-per-milestone rule come from the Product Owner's brief and [BC-001] Constraints; the review cadence follows [SA-001] CM-001.
|
|
|
|
## Gateway Schedule
|
|
|
|
| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone |
|
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
| Foundation | [MIL-001] | 2026-11-06 | 2026-11-06 | S01 | none (technical tasks) | pyproject, gitignore, constants, Doxyfile, README, repo metadata | [Milestone 001][GM-001] |
|
|
| Backend and Hello Flask | [MIL-002] | 2026-11-06 to 2026-11-07 | 2026-11-07 | S01 | none (technical tasks) | hello.py, tests, screenshots 1 and 2 | [Milestone 002][GM-002] |
|
|
| Command line and __main__ | [MIL-003] | 2026-11-07 to 2026-11-08 | 2026-11-08 | S01 | none (technical tasks) | main guard, name_demo, cli_basics, screenshots 3 and 4 | [Milestone 003][GM-003] |
|
|
| Functions and decorators | [MIL-004] | 2026-11-08 to 2026-11-09 | 2026-11-09 | S01 | none (technical tasks) | first_class_functions, decorators, screenshots 5 and 6 | [Milestone 004][GM-004] |
|
|
| Docs and wiki | [MIL-005] | 2026-11-09 to 2026-11-10 | 2026-11-10 | S01 | none (technical tasks) | three-language wiki, Doxygen, code review | [Milestone 005][GM-005] |
|
|
|
|
```plantuml
|
|
@startgantt
|
|
Project starts 2026-11-06
|
|
[Foundation] starts 2026-11-06 and ends 2026-11-06
|
|
[Foundation Go/No-Go] happens 2026-11-06
|
|
[Backend and Hello Flask] starts 2026-11-06 and ends 2026-11-07
|
|
[Backend Go/No-Go] happens 2026-11-07
|
|
[Command line and main] starts 2026-11-07 and ends 2026-11-08
|
|
[CLI Go/No-Go] happens 2026-11-08
|
|
[Functions and decorators] starts 2026-11-08 and ends 2026-11-09
|
|
[Functions Go/No-Go] happens 2026-11-09
|
|
[Docs and wiki] starts 2026-11-09 and ends 2026-11-10
|
|
[Docs Go/No-Go] happens 2026-11-10
|
|
@endgantt
|
|
```
|
|
|
|
## Scope Coverage
|
|
|
|
| Business Case scope item | Gateway |
|
|
| --- | --- |
|
|
| Python source under `src/`, tests under `tests/`, documents under `docs/` | MIL-001 to MIL-004 |
|
|
| `pyproject.toml`, `constants.py`, `.gitignore`, Doxyfile, Doxygen comments | MIL-001, MIL-005 |
|
|
| README with `.venv`, run and test instructions | MIL-001 to MIL-004 |
|
|
| Wiki in en, da, ms with screenshots | MIL-005 |
|
|
| Repository description and topics | MIL-001 |
|
|
|
|
## Dependencies
|
|
|
|
```
|
|
MIL-001 -> MIL-002 -> MIL-003 -> MIL-004 -> MIL-005
|
|
```
|
|
|
|
A No-Go on a gateway moves every later gateway by the time needed to fix and re-review it. S01 decides whether the end date 2026-11-10 moves; the Business Case sets no fixed deadline, so a move needs only a new Version History row of this plan.
|
|
|
|
## Plan Risks
|
|
|
|
| Risk | Impact | Mitigation |
|
|
| --- | --- | --- |
|
|
| Headless screenshot tooling is not available (BC-001 risk 1) | Screenshots delayed | Use Edge or Chrome headless on the host (no user input is taken); otherwise a container |
|
|
| Gitea API token lacks scope for topics or wiki (BC-001 risk 3 context) | Metadata or wiki not published | Stop and report; the author sets it by hand |
|
|
| Repository URL in the brief differs from `origin` | Work lands in the wrong repository | Work against `origin`; record the difference under Open Issues |
|
|
|
|
## Open Issues
|
|
|
|
- The brief names `https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code`; `origin` is `Tirsvad-Udemy-100-days-of-code/054-flask`. The plan uses `origin`. Confirm if the other is meant.
|
|
- "Python greater than 3.13" is read as `>=3.13` (the installed interpreter is 3.13).
|
|
- S03 asks for no runtime dependencies while Flask is required by the assignment; resolved by making Flask the optional extra `web` (SA-001 conflict table).
|
|
- The lecture text mentions the `calculate` function and a greeting decorator only in prose; names and exact behaviour follow that prose.
|
|
|
|
---
|
|
|
|
[BC-001]: ./business-case.md
|
|
[SA-001]: ./stakeholder-analysis.md
|
|
[MIL-001]: ./milestones/mil-001-foundation.md
|
|
[MIL-002]: ./milestones/mil-002-hello-flask.md
|
|
[MIL-003]: ./milestones/mil-003-cli-and-main.md
|
|
[MIL-004]: ./milestones/mil-004-functions-decorators.md
|
|
[MIL-005]: ./milestones/mil-005-docs-wiki.md
|
|
[73a5a95]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/commit/73a5a95d28db041e4f27342cc552e18f7d386410
|
|
[GM-001]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/milestone/342
|
|
[GM-002]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/milestone/343
|
|
[GM-003]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/milestone/344
|
|
[GM-004]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/milestone/345
|
|
[GM-005]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/milestone/346
|
|
[8cd73cc]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/054-flask/commit/8cd73cc46b3f791e0c23a60809a50e4140089d4e
|