A worked TMDB demo of Factory's issue-to-verified-draft-PR software development loop.
by addyosmaniTypeScript
Last 12 weeks · 9 commits
2 of 6 standards met
Why Help people jump to a film in the current discovery page without introducing another TMDB endpoint or confusing the demo with a full catalog search. Product boundary This is a client-side quick finder, not remote TMDB search. It filters only the trending and popular movies already loaded for the discovery page. Its label and helper copy must make that limit clear. Scope Add a quick-finder input near the discovery content. Combine the already loaded trending and popular summaries, deduplicate them by movie ID, and filter by title case-insensitively. Update matching results as the person types without a network request. Give results an accessible count/status, an intentional no-results state, and a clear action. Each match links to the existing movie detail route. Acceptance criteria Typing a partial title returns matching movies from the page’s existing payload, ignoring letter case. Duplicate movies from trending and popular appear once. Clearing the query restores the finder’s initial state. A no-match query shows an explicit no-results message rather than an empty unlabeled grid. The input has a persistent label and concise copy saying it searches movies on this page; result-count updates are announced without moving keyboard focus. Inspecting browser requests while filtering shows no additional TMDB or application data request. A new pure unit test covers case-insensitive matching, partial matches, deduplication, whitespace, and no matches. No existing test file is changed. , , , and pass. TMDB attribution remains visible and remains server-only. Guardrails Keep this under 400 changed lines and within at most five files. Do not touch , , , package files, GitHub workflows, or factory policy/adapters. Do not add a dependency or call a remote search endpoint. Expected files , (new), , ,
What Add a client-side quick finder that filters and deduplicates the trending and popular movies already loaded on the discovery page. Queue item FQ-3 - https://github.com/addyosmani/factory-demo/issues/3 done_when: The labeled discovery-page quick finder filters and deduplicates only the already loaded trending and popular movies by partial title without issuing a request, announces result counts, handles clear and no-match states, and a new filter unit test plus full gates pass. Why this is safe The finder receives the existing server-loaded movie summaries and uses only local React state plus a pure filter. It introduces no fetch, effect, endpoint, dependency, credential change, or load-bearing edit. A new unit test proves matching and deduplication, while responsive checks covered 1440px and 375px layouts and development logs showed no request during filtering. Gates FACTORY_GATES: level=full status=GREEN passed=4 failed=0 failing=none skipped=none misconfigured=none Skipped gates: none Verification Verifier verdict: accepted The implementation is focused, accessible, request-free during filtering, independently green, and negatively proven against the verified base. PROOF: status=PROVEN test_exit=1 Human read required no Not done Remote TMDB catalog search; this finder intentionally searches only movies already loaded on the page.
What Add the local favorites watchlist and normalize every persisted favorite to the approved five-field shape. Queue item FQ-1 - https://github.com/addyosmani/factory-demo/issues/1 done_when: The local watchlist meets issue #1 acceptance criteria; every persisted favorite contains exactly id, title, posterPath, releaseDate, and voteAverage; a new regression assertion proves surplus fields are discarded; full gates pass; and fresh independent verification accepts the result. Why this is safe Persistence reconstructs each stored object from the five allowed fields instead of serializing the caller's object. The new test inspects raw storage and the reversible proof shows it fails against the pre-recovery implementation because a surplus field survives. No pre-existing test, load-bearing path, dependency, or TMDB credential boundary changed. Gates FACTORY_GATES: level=full status=GREEN passed=4 failed=0 failing=none skipped=none misconfigured=none Skipped gates: none Verification Verifier verdict: accepted-with-reservations All functional checks passed, including exact five-field persistence and . Reservation: the human-authorized new regression test is outside the stale list, so the draft requires a human read. Human read required Yes. This is the explicitly authorized recovery after the prior run reached the charter's two-rejection stop, and the handoff manifest was not updated to name the new regression test file. Not done No product behavior beyond issue #1. The factory handoff comment was not rewritten during implementation.
Repository: addyosmani/factory-demo. Description: A worked TMDB demo of Factory's issue-to-verified-draft-PR software development loop. Stars: 2, Forks: 3. Primary language: TypeScript. Languages: TypeScript (41.3%), Shell (41.1%), CSS (16.9%), JavaScript (0.7%). License: MIT. Topics: claude-code, codex, nextjs, software-factory, tmdb. Open PRs: 5, open issues: 3. Last activity: 1mo ago. Community health: 42%. Top contributors: addyosmani.