Skip to content

Add price-drop and status alerts for watchlisted marketplace listings #936

Description

@1nonlypiece

📌 Description

Even with a watchlist, users won't notice when a saved listing's price changes or it sells. There is no alerting on the marketplace surfaces.

This issue adds price-drop and status-change alerts for watchlisted listings, surfaced via the existing toast/notification system.

🎯 Requirements and Context

This is a feature / enhancement task for the CommitLabs frontend (Next.js + TypeScript). It must be implemented cleanly, fully typed, accessible, and well tested — and must not regress existing behavior.

  • Detect price decreases and sold/removed transitions for watched listings against last-seen state.
  • Surface alerts through ToastProvider and/or the notifications center without spamming (dedupe).
  • Let the user mute alerts per listing; persist mute state.
  • Polling must be efficient and abortable; no tight loops.

🛠️ Suggested Execution

1. Fork the repo and create a branch

git checkout -b feature/watchlist-price-alerts

2. Implement the change

  • Primary files to add or modify:
    • src/components/marketplace/WatchlistAlerts.tsx — detection + dispatch.
    • src/components/toast/ToastProvider.tsx — reuse dispatch.
    • src/app/api/marketplace/listings/route.ts — read listing data.
  • Add focused tests in src/components/marketplace/WatchlistAlerts.test.tsx using Jest / Vitest + React Testing Library (happy-dom), covering rendering, interaction, and the edge cases below.
  • Add documentation in docs/WATCHLIST_ALERTS.md describing the feature, props/API, accessibility behavior, and a usage example; cross-link it from the relevant README/docs.
  • Keep the diff small and reviewer-friendly; reuse existing primitives, hooks, and the typed API client instead of duplicating logic.

3. Cover edge cases

  • price drop triggers one alert
  • sold transition alert
  • mute suppresses alerts
  • dedupe avoids repeats

4. Test and commit

  • Run the suite (e.g. pnpm test / pnpm vitest run) and ensure new lines are covered.
  • Verify keyboard navigation, focus handling, and prefers-reduced-motion where relevant.

Example commit message

feat: price-drop and status alerts for watchlisted listings

✅ Guidelines

  • Minimum 95% test coverage on the new/changed lines.
  • Clear, reviewer-friendly documentation (props/API + usage example + accessibility notes).
  • No regressions to existing components, routes, or tests.
  • Fully typed (no any), accessible (labels, roles, live regions where relevant).
  • Timeframe: 96 hours.

🏷️ Labels

type-feature · type-enhancement · area-frontend · MAYBE REWARDED · GRANTFOX OSS · OFFICIAL CAMPAIGN

💬 Community & Support

  • Join the CommitLabs contributor Discord to coordinate, ask questions, and get unblocked fast: https://discord.gg/WV7tdYkJk
  • Please introduce yourself in the channel before you start so we can avoid duplicate work, pair you with a reviewer, and get your PR merged quickly.
  • Maintainers actively triage this channel and aim for fast, clear, respectful reviews — reach out any time you're blocked.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions