Repository source: docs/plans/qdb_quotes_instance/qdb_quotes_instance_step1_solution_assessment.md
QDB Quotes Instance — Step 1: Solution Assessment
Problem
We need a new site instance whose board/index page looks like the classic QDB (a flat numbered list of full quote text) while clicking a quote leads into a normal discussion thread, without forking the existing board/thread rendering pipeline.
Context found
A proven "new instance" pattern already exists:
SiteProfileRegistry(site name/theme/composer copy perFORUM_SITE_ID) plus per-vhostFORUM_REPOSITORY_ROOT/FORUM_DATABASE_PATH/FORUM_STATIC_HTML_ROOT— this is exactly how thechouseinstance (state/local_repository_chouse,state/static_html_chouse) was stood up.The discussion-thread requirement is already solved:
templates/pages/thread.phprenders a root post plus nested replies for any/threads/<id>. No new work needed for "click a quote → see a discussion."The index/list requirement is not solved:
templates/pages/board.phpandtemplates/partials/thread_card.phprender a forum-style card (subject as<h2>, meta date, labels, truncated preview, reply count) — QDB's list instead shows the full quote body under a bare#ID, with no subject/labels/preview truncation. This is a content-shape mismatch, not just a style mismatch.
Options
Option A — CSS-only theme on existing templates
Add a
SiteProfileRegistryentry +ThemeRegistrytheme + one newtheme-qdb.css; reuseboard.php/thread_card.phpunchanged.Pros: smallest change; follows the theme guide's "CSS-only illusion" principle; zero template/controller risk.
Cons: can't actually get QDB's format — subject-as-title and truncated preview are baked into the markup, not styleable away; still shows per-thread subject composer flow, which QDB quotes don't have.
Option B — New instance + new quote-list partial, reuse thread page (Recommended)
Follow the
chouseprecedent for a new instance (profile + vhost env vars + theme CSS), plus one new partial (e.g.quote_card.php) swapped into the board template for this instance, rendering#<id>+ full body, no subject/labels/preview truncation. Thread page (thread.php) is reused untouched as the click-through discussion view.Pros: reuses the proven instance-creation path and the entire thread/reply/discussion system as-is; new code is bounded to one partial
one theme + the board template's card choice; matches FDP's "reuse
before forking markup" rule.
Cons: still a template change (not pure CSS), so it touches
board.php's rendering choice, scoped by site profile.
Option C — Standalone quotes micro-app (new routes/controller)
New
/quotes,/quotes/<id>routes and controller, independent ofboard.php/tag.php, querying the same read model directly.Pros: fully isolated from the shared board/tag pipeline; no risk of regressing zenmemes/chouse board views.
Cons: duplicates routing/controller plumbing that Option B gets for free from the existing instance + partial mechanism; bigger surface area for a feature that fits the existing thread model well.
Recommendation
Option B. It reuses the already-proven multi-instance mechanism (same
path that stood up chouse) and the existing thread/reply system for the
discussion side, keeping new work to one partial, one theme, and a
per-instance board-rendering choice — the smallest change that produces an
authentic QDB list without forking shared templates.