Choose a CommanderBack to the commanders

About this project

Choose a Commander lists every Commander-legal Magic: The Gathering commander in one full-screen grid, with filters, statistics and themes, to make it easier to find the one that fits how you want to play.

How it was built

  • Everything is filtered in your browser

    The page downloads the whole list once (about 3,500 commanders) and filters, sorts and computes the statistics locally, so every click is instant and the server only has to answer one cacheable request.

  • The data stays fresh without a server

    A scheduled job compares Scryfall's bulk files with what is stored, using a content hash per commander, and writes only what changed to the database. A normal day touches a handful of rows.

  • Themes come from the community

    Themes such as +1/+1 counters or Treasure are not guessed from card text: they map to Scryfall's community-maintained Tagger tags, grouped in one list that is easy to review.

  • Free to run

    Everything fits in the free tiers of Cloudflare and GitHub: the database is read once an hour at most thanks to edge caching, and the sync runs outside the request path.

  • No accounts

    Favorites and view preferences live in your browser's local storage. Nothing about you is stored on a server.

Technologies

Nuxt 4
The application framework, prerendered
Vue 3.5
Components and reactivity, written in TypeScript
Nuxt UI 4
Component library and theming
Tailwind CSS 4
Styling
Cloudflare Pages
Hosting, with the API running as a Pages Function
Cloudflare D1
The SQLite database holding every commander
Scryfall
Card data, images and community theme tags (Tagger)
GitHub Actions
Daily data sync, linting, type checking and tests
Apache ECharts
The mana value histogram
mana-font
Mana symbols
VueUse
Local storage, media queries and infinite scrolling
Nuxt i18n
Translations and browser language detection
Vitest
Unit tests
ESLint
Linting, with zero warnings tolerated
fallow
Static analysis for dead code and duplication

Author

Emanuele Nardi

Emanuele Nardi

emanuelenardi

Credits

Card data and images are provided by Scryfall. Magic: The Gathering is a trademark of Wizards of the Coast; this is an unofficial fan project. Part of the Pauperwave family of tools.