first pass at the newspaper builder
Test / test (push) Has been cancelled

This commit is contained in:
2026-09-14 11:57:22 +10:00
commit bec1eaac87
497 changed files with 178953 additions and 0 deletions
@@ -0,0 +1,55 @@
# Team Practices — Finalized
> Affirmed team practices for the wedding newspaper generator, produced from
> the interview answers + three specialist reviews, pending affirmation gate.
## Way of Working
Direct to main. This is a solo local project, so everyday edits go straight to
the main line; we use branches only if something larger ever warrants a review
boundary. No feature-branch ceremony for routine work.
## Walking Skeleton
Skip the separate walking-skeleton step. The layout and content are built
together — there is no integration surface to prove, and a thin end-to-end slice
(one markdown file → one rendered A4 page) emerges naturally as the first piece
anyway.
## Testing Posture
Unit tests for the markdown→HTML transform. The primary testable surface is the
renderer: sample article markdown must always map to complete, correctly
structured newspaper HTML with no dropped sections or mangled escaping, and the
print stylesheet must keep content inside an A4 sheet. We write focused tests for
the transform logic rather than an exhaustive suite; the print result remains the
real-world acceptance check.
Methodology: test-after
Ordering: implement the transform and layout, then write and run tests that
verify markdown→HTML fidelity and A4 print containment.
## Deployment
File-only, no server. A Python static generator (primary path, run with the
working `uv` runtime) reads content files and emits a self-contained
`newspaper.html`. The page is opened directly via `file://` and printed to A4
from the browser print dialog. The generated page also includes a native
file-picker / drag-and-drop load path so content can be swapped in live without
regenerating. No server, no browser flags, never deployed beyond localhost. The
generator may optionally call AI to draft newspaper copy before rendering.
## Code Style
Minimal and pragmatic, no style rules beyond staying consistent. Pure HTML5 +
CSS + vanilla JS with no build step and no framework. Keep formatting clean by
hand; do not introduce tooling, transpilers, or bundlers.
## Forbidden
(none affirmed by the team)
## Mandated
- ALWAYS keep the output runnable purely from the local filesystem with no
network requests (affirmed)