dyrt.

macOS application · Version 0.4.0

Aurora

A desktop stock monitor for Pokémon TCG products at Danish retail stores. Aurora watches product pages, alerts the moment something can be ordered, and shows whether it is worth buying by weighing the retail price against its resale value. Checkout always stays with the user, in their own browser.

Aurora's Products view: a table of Elite Trainer Boxes with retail price, resale value, margin, a Strong, Marginal or Skip verdict, and the stores that stock each one.
The Products view. Each product carries its retail price, a resale reference, the expected margin and a verdict.

Features

Deal Radar

Reads each store's public sitemap to find every sealed product page, checks live price and stock, matches it to Cardmarket, and alerts when an item in stock resells above the user's minimum return. New product pages are flagged too, often days before release.

Restock and launch monitors

Restock monitors alert the moment a product goes from sold out to in stock. Launch monitors stay idle until shortly before a release, check quickly through the release window, then fall back to restock timing.

Vault

An inventory and profit ledger. Purchases are valued daily against the same resale figure Deal Radar uses, with portfolio value, realised and unrealised profit, ROI, per-item price history, sell targets and CSV export.

Alerts everywhere

Discord messages, native desktop notifications and phone push through ntfy. A menu bar item, quiet hours, a command palette and a restock heatmap keep the app out of the way until it matters.

Monitors

One link, one decision.

Paste a product page from BR, Bilka, føtex or Spelexperten, choose restock or launch, and Aurora does the watching. Stock is read from the structured product data the stores already publish, so no scraping of page layouts is required.

Aurora's New monitor dialog, with a catalogue product picker, a product link field, and a choice between Restock and Launch modes.

Engineering

  • Polite by design

    One request at a time per store, at least one second apart, with exponential backoff and Retry-After support. Monitors stop themselves if a store refuses requests.

  • Sandboxed interface

    The interface runs with context isolation and a strict Content Security Policy, and talks to the app only through a typed bridge. Every call across it is validated.

  • Honest matching

    Products are matched to Cardmarket with kind-aware fuzzy matching. Ambiguous matches are left for the user to confirm and are never guessed.

Version
0.4.0
Platform
macOS
Stack
Electron, React, TypeScript
Stores
BR, Bilka, føtex, Spelexperten
Tests
161 passing