Andrew Ridgway bec1eaac87
Some checks failed
Test / test (push) Has been cancelled
first pass at the newspaper builder
2026-09-14 11:57:22 +10:00
2026-09-14 11:57:22 +10:00
2026-09-14 11:57:22 +10:00
2026-09-14 11:57:22 +10:00

Wedding Newspaper Generator

A fully-local tool that turns markdown/text content into a printable wedding newspaper — rendered as a classic broadsheet HTML page you open in your browser and print to A4. Nothing is deployed, served, or published beyond your machine.

How it works

your/issue/
  config.json     # masthead metadata: title, couple names, date, issue, volume
  content/        # markdown/.txt article files (optional front-matter)
    lead.md
    funnies.md
cd newspaper
uv sync --extra dev                 # first time only
uv run python -m newspaper.generator.cli --project /path/to/your/issue

This writes newspaper.html in your issue folder — a self-contained, zero-network, A4-printable page. Open it via file:// and choose Print → A4 from the browser.

Why file:// is fine here: the generator bakes all content into the HTML at build time, so the printed page makes no network requests. If AI-draft / live cartoons are wired in later, those happen at generation time — the emitted page stays self-contained.

Packages

Package Role
newspaper/generator/ CLI, config + content ingestion, column-flow A4 layout, self-contained emit
newspaper/ai_draft/ optional AI copy drafting (DraftBundle handoff, fail-soft)
newspaper/funnies/ find-a-word, crossword, cartoon selection from content

Content authoring

Each file in content/ becomes an article. Optional YAML front-matter:

---
headline: The Big Day
byline: Sam & Alex
section: Front Page
---
Body text here. Vows said & dancing began.

Tests

uv run pytest newspaper/tests/ -q     # 22 tests, all passing

CI runs the same suite via Gitea Actions (.gitea/workflows/test.yml). The pipeline is tests-only — there is no build/deploy/publish step.

Config

config.json:

{
  "title": "The Wedding Times",
  "couple_names": "Sam & Alex",
  "date_line": "Sat 14 Sep",
  "issue_number": "1",
  "volume": "1"
}

License

MIT

Description
No description provided
Readme 2.1 MiB
Languages
TypeScript 99.1%
Python 0.9%