From 457b84c6da2d5bbd52f64544bdb0b21cf3cd7d92 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Sat, 17 Oct 2026 15:41:15 +0800 Subject: [PATCH] Add README, screenshots, tri-lingual wiki and wiki workflow (MIL-003) README from the framework template, three terminal screenshots rendered by script, wiki pages in English, Danish and Bahasa Malaysia, the publish-wiki workflow, and the milestone links in the Project Plan. Refs #13 Refs #14 Refs #15 Refs #16 Refs #17 Refs #18 --- .gitea/workflows/publish-wiki.yml | 38 +++++++++ .gitignore | 3 + README.md | 124 +++++++++++++++++++++++++++++- docs/images/dry-run.png | Bin 0 -> 42361 bytes docs/images/tests.png | Bin 0 -> 7453 bytes docs/images/venv-setup.png | Bin 0 -> 27948 bytes docs/project-plan.md | 9 ++- docs/wiki/Architecture-da.md | 14 ++++ docs/wiki/Architecture-ms.md | 14 ++++ docs/wiki/Architecture.md | 14 ++++ docs/wiki/Configuration-da.md | 18 +++++ docs/wiki/Configuration-ms.md | 18 +++++ docs/wiki/Configuration.md | 18 +++++ docs/wiki/Home-da.md | 17 ++++ docs/wiki/Home-ms.md | 17 ++++ docs/wiki/Home.md | 17 ++++ docs/wiki/Setup-da.md | 20 +++++ docs/wiki/Setup-ms.md | 20 +++++ docs/wiki/Setup.md | 20 +++++ docs/wiki/Testing-da.md | 18 +++++ docs/wiki/Testing-ms.md | 18 +++++ docs/wiki/Testing.md | 18 +++++ docs/wiki/Usage-da.md | 26 +++++++ docs/wiki/Usage-ms.md | 26 +++++++ docs/wiki/Usage.md | 26 +++++++ docs/wiki/_Sidebar.md | 14 ++++ 26 files changed, 523 insertions(+), 4 deletions(-) create mode 100644 .gitea/workflows/publish-wiki.yml create mode 100644 docs/images/dry-run.png create mode 100644 docs/images/tests.png create mode 100644 docs/images/venv-setup.png create mode 100644 docs/wiki/Architecture-da.md create mode 100644 docs/wiki/Architecture-ms.md create mode 100644 docs/wiki/Architecture.md create mode 100644 docs/wiki/Configuration-da.md create mode 100644 docs/wiki/Configuration-ms.md create mode 100644 docs/wiki/Configuration.md create mode 100644 docs/wiki/Home-da.md create mode 100644 docs/wiki/Home-ms.md create mode 100644 docs/wiki/Home.md create mode 100644 docs/wiki/Setup-da.md create mode 100644 docs/wiki/Setup-ms.md create mode 100644 docs/wiki/Setup.md create mode 100644 docs/wiki/Testing-da.md create mode 100644 docs/wiki/Testing-ms.md create mode 100644 docs/wiki/Testing.md create mode 100644 docs/wiki/Usage-da.md create mode 100644 docs/wiki/Usage-ms.md create mode 100644 docs/wiki/Usage.md create mode 100644 docs/wiki/_Sidebar.md diff --git a/.gitea/workflows/publish-wiki.yml b/.gitea/workflows/publish-wiki.yml new file mode 100644 index 0000000..07ff1c0 --- /dev/null +++ b/.gitea/workflows/publish-wiki.yml @@ -0,0 +1,38 @@ +# Publish the project's wiki pages to the git host's wiki. +# +# On a push to main that changes docs/wiki/, this workflow calls the reusable +# workflow of TirSystem/github-action, which copies the Markdown pages of +# docs/wiki/ to the wiki of this repository (framework/process/wiki.md says +# what the folder holds: English and the PO language as a minimum). +# +# INSTALLING THIS FILE IS THE OPT-IN. There is no marker file. A project that +# does not copy it publishes nothing. +# +# Copy it to .gitea/workflows/publish-wiki.yml. Then: +# 1. Create the secret TOKEN_FOR_GITEA_WIKI in the organization of the +# repository: a Gitea token with scope write:repository for a user that +# can write this repository (see guides/credentials.md of github-action). +# 2. Enable the wiki in the repository settings. +# 3. Keep @v1, or pin the exact release tag together with tools-ref. +# A runner must be registered for the repository (or its organization). +# +# prune: "true" deletes wiki pages that are not in docs/wiki/, so the wiki +# always equals the folder. Leave it "false" to keep hand-written pages. + +name: Publish wiki + +on: + push: + branches: [ main ] + paths: + - "docs/wiki/**" + workflow_dispatch: + +jobs: + wiki: + uses: TirSystem/github-action/.gitea/workflows/publish-wiki-pages.yml@v1 + with: + wiki_dir: docs/wiki + prune: "true" + secrets: + TOKEN_FOR_GITEA_WIKI: ${{ secrets.TOKEN_FOR_GITEA_WIKI }} diff --git a/.gitignore b/.gitignore index efabc00..d9ddc9a 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,6 @@ docs/doxygen/ .vscode/ .DS_Store Thumbs.db + +# AI prompt log (the repository is public) +/docs/ai-prompts/ diff --git a/README.md b/README.md index 774bb98..0fd694f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,124 @@ -# 032-birthday-wisher +# 🚀 Birthday Wisher +Sends a random birthday letter by e-mail to everyone in `birthdays.csv` whose birthday is today. It is the "normal" level of day 32 of Udemy's *100 Days of Code: The Complete Python Pro Bootcamp*, written for course participants and for anyone who browses the repository for ideas. + +## 📚 Table of Contents + +- [Overview](#-overview) +- [Requirements](#-requirements) +- [Setup](#-setup) +- [Run](#-run) +- [Tests](#-tests) +- [License](#-license) +- [Links](#-links) +- [Appendix: Project documents](#-appendix-project-documents) + +## 🧭 Overview + +The program reads `birthdays.csv`, compares today's month and day with each row, picks one of `letter_templates/letter_1.txt` to `letter_3.txt` at random, replaces `[NAME]` with the person's name and sends the letter through SMTP with STARTTLS (Gmail by default). It uses only the Python standard library, so it has no runtime dependencies. + +![A dry run: the letters that would be sent](docs/images/dry-run.png) + +| Path | What it is | +| --- | --- | +| `src/birthday_wisher/` | The program: `domain`, `application`, `infrastructure` and `presentation` layers, constants in `constants.py` | +| `tests/` | pytest tests: `unit`, `integration`, `e2e`; all run offline | +| `birthdays.csv` | The people: `name,email,year,month,day` (dummy data) | +| `letter_templates/` | Three letters with the `[NAME]` placeholder | +| `Doxyfile` | Doxygen configuration; the source carries Doxygen comments | +| `docs/` | Project documents, images and the wiki in English, Danish and Bahasa Malaysia | + +## 📋 Requirements + +- Python 3.13 or newer, to run the program and the tests. +- A Gmail address and an app password, only to send real e-mail. A dry run and the tests need neither. +- Doxygen, only to build the API documentation (optional). + +## 🛠️ Setup + +Create and use a local virtual environment, then upgrade pip and install the project with its test tools: + +```bash +python -m venv .venv +``` + +Activate it. On Windows (PowerShell): `.venv\Scripts\Activate.ps1`. On Windows (cmd): `.venv\Scripts\activate`. On Linux and macOS: `source .venv/bin/activate`. + +```bash +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +![Creating the .venv](docs/images/venv-setup.png) + +To send real e-mail, set two environment variables (see `.env.example`; never commit a real `.env`): + +```bash +export GMAIL_ADDRESS="you@gmail.com" +export GMAIL_TOKEN="your-app-password" +``` + +On Windows PowerShell use `$env:GMAIL_ADDRESS = "you@gmail.com"` and `$env:GMAIL_TOKEN = "your-app-password"`. + +## ▶️ Run + +Print the letters instead of sending them (pretend today is 17 October 2000): + +```bash +python -m birthday_wisher --dry-run --today 2000-10-17 +``` + +Send the letters for today's birthdays: + +```bash +python -m birthday_wisher +``` + +Options: `--dry-run`, `--today YYYY-MM-DD`, `--csv FILE`, `--letters FOLDER`. The program exits with status 1 when setup is wrong or a letter could not be sent. Generate the API documentation with `doxygen Doxyfile` (output in `docs/doxygen/`). + +## 🧪 Tests + +```bash +python -m pytest +``` + +The tests use a fake SMTP connection and temporary files. They need no network, no `.env` and no credentials. + +![The test run](docs/images/tests.png) + +## 📄 License + +GNU Affero General Public License v3.0, see [LICENSE](LICENSE). + +## 🔗 Links + +- [Repository][repository] +- [Documentation][documentation] +- [Issue tracker][issues] + +## 📎 Appendix: Project documents + +| Document | What it tells you | +| --- | --- | +| [AGENTS.md][agents] | The rules AI agents follow in this repository | +| [Business Case][BC-001] | Why the project exists, its scope and success criteria | +| [Stakeholder Analysis][SA-001] | Who is involved; the stakeholder IDs used for owners and reviewers | +| [Project Plan][PP-001] | The gateways and their schedule | +| [Milestones][milestones] | One document per gateway: Go/No-Go criteria and tasks | +| [Artifact registry][registry] | Where each artifact type lives, the next version, the PO language and domain | +| [Framework README][framework-readme] | The framework this project uses | +| [Framework changelog][framework-changelog] | What changed in each framework release | + +--- + +[repository]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/032-birthday-wisher +[documentation]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/032-birthday-wisher/wiki +[issues]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/032-birthday-wisher/issues +[agents]: ./AGENTS.md +[BC-001]: ./docs/business-case.md +[SA-001]: ./docs/stakeholder-analysis.md +[PP-001]: ./docs/project-plan.md +[milestones]: ./docs/milestones/ +[registry]: ./docs/artifact-registry.md +[framework-readme]: ./framework/README.md +[framework-changelog]: ./framework/CHANGELOG.md diff --git a/docs/images/dry-run.png b/docs/images/dry-run.png new file mode 100644 index 0000000000000000000000000000000000000000..a52dcea73c7b5b23cdf6106c385b2e0d53e1b003 GIT binary patch literal 42361 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 literal 0 HcmV?d00001 diff --git a/docs/images/tests.png b/docs/images/tests.png new file mode 100644 index 0000000000000000000000000000000000000000..347a7f8a3063ca32fa5c220340fb0c7ff0cb8bbd GIT binary patch literal 7453 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 literal 0 HcmV?d00001 diff --git a/docs/images/venv-setup.png b/docs/images/venv-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..543e5dfe504e81d1f003d18c44b9facbdd3b3f17 GIT binary patch literal 27948 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