Taking projects
โ† All work
Software2026Live

Cardstock

Your Magic collection, priced and sorted offline, with a deck builder that starts from the cards you already own.

Cardstock's poster, drawn from the app's own styles rather than captured: its read of a sample Commander deck, short of 3 tutors, 3 protection and 3 ramp, and 2 more, beside that deck's workspace, with the name, its card mark and the line "Shuffle less. Brew more"

Why it exists

If you play Magic: The Gathering, your shelf knows more than any deck site. Most collection tools keep your cards on their server, so a deck list there can't tell which copies you own. Cardstock starts from the shelf.

What it does

  • Search speaks Scryfall's query language, plus a few words for what you own. Type have>=1 t:creature and you get only the creatures you have.
  • Imports never guess, so a price or a legality check never rests on a bad match. A row that doesn't match exactly one printing waits for you in a review queue, and any import can be undone.
  • Open a deck and every card you're missing, or short on, is marked. The optimizer suggests swaps and shows the weights it scored them with, so you can see why.

Under the hood

Your collection never leaves your machine. Cardstock is an Electron and React app over one SQLite file on your own disk, and card data comes down once from Scryfall's public files. To check a deck's mana and curve, it goldfishes, playing sample hands against nobody in a Rust core compiled to WebAssembly.

What I learned

The deck's analysis kept growing until the most useful part, the swap suggestions, sat two screens down. Instead of trimming it, I gave analysis a space of its own, with the whole window to itself.

Role
Product, design, build
Platforms
Windows installer; macOS from source
Stack
Electron, React, SQLite, Rust
Status
Live
Year
2026
Cardstock's collection view: a search for creatures in a demo collection, each printing in a dense table with its price and the deck it sits inA Commander deck in the workspace: a 100-card Chatterfang deck, what it is still short of, and the suggested swaps along the bottom (demo data)