How DexBindr organizes your Pokémon collection
One slot per Pokémon, every set, every language. A tour of the binder model, why it's built this way, and how to get the most out of it.
A physical Pokémon binder has a page for each Pokémon and a pocket for each card you own of it. DexBindr mirrors that mental model in code, with one difference: the app keeps track of every card that could go in each pocket, not just the ones you've got today.
This post walks through the building blocks so you know what the interface is doing under the hood.
The slot model#
Every page on DexBindr treats one Pokémon as a single slot. That slot has three states:
- Empty: you haven't collected any cards of this Pokémon yet
- Filled: you own at least one card; one of them is "selected" as the binder face
- Swap-ready: a slot is filled and the card detail screen shows a different card you're looking at
The slot decides what shows on the binder grid and what counts toward your progress bar. Swapping the selected card is the main action on any filled slot.
Cards vs. slots#
Most trackers conflate cards and slots. DexBindr keeps them separate so that owning three versions of Charizard lights up exactly one slot in the binder. The slot represents "I've got some Charizard"; the selected card is which variant you want to showcase.
In code, a slot looks roughly like this:
interface BinderSlot {
dex: number; // Pokémon ID, 1..1025
selectedCardId: string | null; // null when empty
costBasis: number | null;
currency: string;
ownedAt: string | null; // ISO date the slot was filled
notes: string;
}This matters more than it sounds:
- Your totals don't double-count variants
- Your progress bar measures Pokémon coverage, not card count
- Swapping the face is a UI gesture, not a collection change
Languages and regions#
The data index treats English and Japanese as parallel universes. A Japanese Charizard card lives in the same slot as the English one, both count toward your slot's "filled" state, but they show up in the JA tab on the Pokémon detail page.
Language-specific cards are sourced separately so the app can stay accurate even when the TCG releases a set in one region but not the other.
Progress tracking#
Three counters run in parallel:
- Binder progress: slots filled / 1,025 (this is the main one)
- Market value: sum of cost basis you've entered, if any
- Generation breakdown: slots filled per generation
Each surfaces in a different place in the UI. The binder progress is the number that scales to the full site. The other two are there when you want to drill in.
What's next#
The binder is the foundation. Everything else (set pages, shop search, public share links) is a lens on top of the same slot data.
If you're building a specific dex, the Gen 1 binder guide walks through how to close 151 slots without burning out. For collectors coming back after a long break, the restart guide covers what's changed since you last pulled a pack.
Related posts
How to build a Gen 1 Pokédex binder that actually finishes
A practical plan for closing all 151 Kanto slots in a one-per-Pokémon binder. Which sets to pull from, which slots trip everyone up, and how to pace it.
Japanese and English Pokémon cards in the same binder: making it work
How to build a one-per-dex Pokémon binder that mixes Japanese and English cards without losing track of what you own. Set-structure differences, language-exclusive cards, and where each version is the better buy.
Building a Pokémon binder on $20 a month
A four-year plan to close a one-per-dex Pokémon binder on $20 a month. Where to spend, where to save, which tiers to skip, and how to pace a budget build without burning out.