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
emanuelenardiCredits
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.
