Manapulse.dk: MTG/EDH Game and Collection Tracker

Manapulse.dk: MTG/EDH Game and Collection Tracker

I play EDH (the multiplayer format of Magic: The Gathering) every Friday with a local group in Hillerød. We wanted to know who was taking home the wins so we could threat assess better during the games so being a developer I naturally started building a game tracker. It turned into manapulse.dk: a tracker for EDH games, MTG collections & decks, wishlists, trading, and card prices. There were two interesting technical problems.

Scanning cards on-device

I wanted to build a scanner from the ground up: Point your phone at a card and it’s identified for usage in the app whether to check rulings, prices for trades or adding it to your collection/wishlist. I wanted to do this entirely on the phone to ensure fast response. All inference runs in the browser app, on ONNX Runtime Web over WebGPU (with WASM fallback). Three models: a YOLO
detector finds the card, a classifier reads the set symbol, and an encoder (DINOv2-small, later a distilled TinyViT)
turns the art crop into an embedding matched against a bank of ~100,000 printings.

Collection Organization and Management

Players of card games like MTG often have multiple thousand cards. Initially it might be possible to mentally keep track of these but as the collection grows this become harder and harder. The result is that it becomes harder to trade (you don’t remember what you have to sell or what you need to buy), it becomes harder to find cards when building decks and you might loose track of how much you are actually spending on the game (and what the valuation of your collection is).

Manapulse helps players digitalize their collection. It has an advanced inventory system to track the entire collection whether it is in decks, binder or loose piles. And even better, it helps track the cards as they move around. When trading cards they are automatically added or removed from your collection (with registration of paid price for further P/L evaluations). And it allows the user to share his collection with a link so others can browse with the intent of trading.

Tech Stack

  • Backend: .NET 10 Minimal APIs, vertical-slice features, EF Core + SQLite.
  • Frontend: React 19 + TypeScript, Tailwind v4, TanStack Router, served as a PWA.
  • Hosting: one Docker image (the API serves the React build), behind Caddy. SQLite on a volume mount.

Try the app at manapulse.dk if you are a fan of Magic: The Gathering we might have the best scanner on the market 🙂