deckhearth/.convoys/pricing-online-local/brief-13-local-stores-ui.md
Randall Stillwell d0468015eb
Some checks failed
CI / Lint (pull_request) Has been cancelled
CI / Schema map up to date (pull_request) Has been cancelled
CI / Forbidden patterns (9 checks) (pull_request) Has been cancelled
CI / Migrations apply (node-pg-migrate) (pull_request) Has been cancelled
Visual diff / Should run? (pull_request) Has been cancelled
CI / Unit tests (vitest) (pull_request) Has been cancelled
Convoy metrics gate / Require role-event telemetry on convoy PRs (pull_request) Has been cancelled
PR Health rollup / Aggregate gate status (pull_request) Has been cancelled
Preview smoke / Should run? (pull_request) Has been cancelled
Preview smoke / Playwright smoke (pull_request) Has been cancelled
Visual diff / Screenshot diff (pull_request) Has been cancelled
feat(pricing): convoy for online prices and local stores
Add pricing schema, free API integrations (MTG bulk, TCGdex, Foolio),
valuation and sort-by-price, card detail pricing UI, and nearby store
discovery via home zip and OSM geo clients.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:47:46 -05:00

47 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
convoy: pricing-online-local
brief_number: 13
depends_on: [9, 11, 12]
recommended_model: composer-2.5
model_tier: standard
files:
- components/card-detail/CardDetailLocalStores.js
- components/CardDetailView.js
- lib/use-card-detail.js
- test/components/CardDetailLocalStores.test.js
cross_brief_commitments:
- brief: 9
description: |
Inserts local stores section into the purchase tab area using the
slot Brief 9 reserved. Does not rework purchase pricing UI.
---
# Brief 13: Local stores card detail UI
## Goal (1 sentence)
Show “Game stores near you” on card detail using saved home zip and the nearby stores API.
## Files in scope (do not edit anything else)
- `components/card-detail/CardDetailLocalStores.js`
- `components/CardDetailView.js`
- `lib/use-card-detail.js`
- `test/components/CardDetailLocalStores.test.js`
## Conventions to follow
- Fetch `/api/stores/nearby` when purchase tab active (auth required).
- List: name, address, distance, phone/website links, OSM link — no in-store prices.
- Empty states: no zip → link to Settings; no stores → gentle copy.
- Liquid Glass styling consistent with Brief 9 components.
## Acceptance criteria
- [ ] Stores render when user has home zip configured
- [ ] Prompt to set zip when missing
- [ ] No scraped in-store pricing shown
- [ ] Component test covers empty + populated states
- [ ] Tests pass
- [ ] No scope expansion
## Rationale (≤3 sentences)
Completes Phase 2 user-facing goal on card detail. Depends on pricing UI shell from Brief 9 and backend from Briefs 11–12.