Product Compare is an evidence-led family of independently deployed web apps for understanding products through traceable first-party information. The platform currently contains phones, tablets, cars, and laptops and is designed to add categories without coupling their releases.
| App | Package | Production Worker |
|---|---|---|
| Phones | @product-compare/phones |
product-compare-phones.bboyromano.workers.dev |
| Tablets | @product-compare/tablets |
product-compare-tablets.bboyromano.workers.dev |
| Cars | @product-compare/cars |
product-compare-cars.bboyromano.workers.dev |
| Laptops | @product-compare/laptops |
product-compare-laptops.bboyromano.workers.dev |
The phone app has domain-specific, fact-level comparisons. The other apps begin as product-identity and lifecycle directories: they expose their evidence boundary rather than inventing specifications before domain review is complete.
Requirements: Node.js 22.13 or newer and pnpm 11.
pnpm install --frozen-lockfile
pnpm dev:phones
pnpm dev:tablets
pnpm dev:cars
pnpm dev:laptopsEach app is independently verifiable:
pnpm check:phones
pnpm check:tablets
pnpm check:cars
pnpm check:laptopsRun the workspace policy checks and the complete suite with:
pnpm checkPhone discovery remains separate from published truth in apps/phones/inventory/candidates.ndjson. Use pnpm inventory:check, pnpm inventory:coverage, or pnpm inventory:import:wikidata for that bounded workflow.
apps/*owns category data, domain behavior, Worker identity, tests, and release metadata.packages/catalogowns the generic identity/provenance contract, relational schema/projection, catalogue API, and deterministic validation.packages/webowns the shared identity-directory presentation and depends only on the catalogue contract.packages/buildowns build-time Sites packaging and safe non-secret Worker defaults.toolingowns workspace-boundary and changed-dependency validation.
CI calculates the dependency closure of the changed files. An app-only change checks only that app; a shared-package change checks its package and affected consumers. Production deployment uses the same planner, one Cloudflare Worker, D1 database, and GitHub environment per app, and app-specific concurrency. Git remains the catalogue source of truth; releases publish content-addressed relational projections to D1.
See Architecture, Operations, ADR 0006, and ADR 0007 for the durable design.
Autonomous work begins with AGENTS.md. The canonical controls are Product Goal, Governance, and Resource Policy.
Voluntary support through GitHub Sponsors or Ko-fi helps sustain development and operating costs but never influences product data, coverage, or comparisons.