Skip to content

feat(card): expanded card watchlist with editor relevance ratings #437

@jbourdin

Description

@jbourdin

Description

Create a public watchlist of Expanded-format cards ranked by relevance, curated by archetype editors. The goal is to help players interested in the format spot trade opportunities by surfacing which cards matter in the current meta.

Rating system

Archetype editors rate cards on a 0–5 scale:

  • 5 — Staple (seen in most competitive decks)
  • 3 — Often used (common in several archetypes)
  • 1 — Occasionally used (niche or tech choice)
  • 0 — Disregarded (not competitively relevant)

Cards that have never been rated by any editor are excluded from the watchlist entirely.

User experience

  • Public watchlist page: cards sorted from hottest (highest average rating) to marginal, with card images, names, and aggregated score
  • Set browser for editors: browse cards by set (TcgdexSet), click a card to set its rating (0–5). Quick workflow for bulk rating.
  • Filters: by card type (Pokemon/Trainer/Energy), by set, by rating range

Current state

  • No card catalog or browsing UI exists yet — cards are only visible within deck lists
  • CardIdentity groups cards across printings, CardPrinting represents specific set printings
  • TcgdexSet / TcgdexSerie model the set hierarchy with multilingual names
  • TcgdexCard mirrors TCGdex data locally (images, abilities, attacks, pricing)
  • CardPrinting.priceInCents tracks Cardmarket average price
  • CardPrinting.isExpandedLegal flags format legality

Implementation considerations

  • New entity: CardRating — links User + CardIdentity + score (0–5) + timestamp
  • Aggregation: average score across all editor ratings, with count
  • Set browsing UI: list sets (series → sets), show card grid per set, overlay current user's rating
  • Public watchlist: paginated, filterable, sorted by aggregated score
  • Permissions: only ROLE_ARCHETYPE_EDITOR can rate; watchlist is public

Open questions

  • Should ratings be per CardIdentity (functional card) or per CardPrinting (specific set)?
  • Should the aggregation weight more recent ratings higher?
  • Should we show price data alongside the watchlist (trade signal)?
  • Should non-editors be able to see individual editor ratings, or only the aggregate?
  • Should we pre-populate ratings based on card frequency across existing deck lists?
  • How to handle set release — auto-flag new cards as unrated for editor attention?

Technical notes

This is a large feature requiring:

  1. New entity + migration
  2. Card browsing UI (new, greenfield — no existing card catalog)
  3. Rating interaction (likely React component with click-to-rate)
  4. Aggregation service
  5. Public watchlist page with filtering/sorting
  6. Significant design discussion before implementation

Feature reference

New feature — would need a new feature ID in docs/features.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status

    Next

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions