Command is a Flutter app for Magic: The Gathering Commander players who want faster deck-building decisions without bouncing between tools.
It brings together daily card recommendations, commander-aware filtering, local search, curated format views, and in-app browsing for key Commander resources. The app is built on Scryfall bulk data, works primarily from a local cache, and keeps daily suggestions deterministic so the experience feels stable and intentional.
- Daily Commander-focused card suggestions for spells and lands
- Commander picker that updates the Daily screen to the selected color identity
- Fast local search plus advanced Scryfall-style query support
- Dedicated screens for brackets, banned cards, and game changers
- In-app browsing for Wizards and EDHREC with navigation controls and domain restrictions
- Offline-friendly data model powered by local caching
Commander deck building usually means moving between card databases, articles, and personal notes. Command narrows that workflow into a single app:
- discover a fresh set of daily recommendations
- anchor them to a commander you actually want to build around
- search the full local card pool instantly
- review bracket, banned, and game changer context without leaving the app
- Cleaner card zoom pricing: prices are easier to scan at a glance, with market access shown as a simple external-link indicator.
- Faster browsing in format views: filter chips now collapse as you scroll in Land Guide, Game Changers, and Banned, giving more room to explore cards.
- More consistent filtering UX: chip behavior is aligned across views for a predictable tap-and-filter experience.
- Search flow polish: the main search action now uses a compact icon button with the same accent color language used across the app.
- Visual consistency improvements: app colors are now centralized, creating a more cohesive look and making future design updates faster.
- Daily spell and land recommendations generated from local card data
- Separate slots for regular and game changer picks
- Pull-to-refresh support using the current filter state
- Swipeable app bar artwork sourced from the active daily pool
- Commander selection flow that immediately applies the commander's color identity to daily filtering
- Commander-only autocomplete search on the Daily screen
- Results limited to cards that can legally function as commanders
- Selected commander is shown inline on the Daily page
- Tapping the selected commander reopens search so a new commander can be chosen quickly
- Local search by name, oracle text, and card properties
- Advanced search screen with Scryfall-style query syntax
- Fullscreen card zoom experience
- Card detail and art actions for deeper inspection
- Quicker, cleaner search action with an icon-first control
- Brackets screen for curated browsing
- Game Changers screen
- Banned cards screen
- Double-faced card badges and other visual cues throughout the app
- Scroll-aware filters that stay available when needed and get out of the way while browsing
- Wizards section with dedicated tabs for Announcements, Preview, and Making Magic
- EDHREC tab for in-app browsing
- Back, forward, and refresh controls
- Navigation locked to approved domains so each tab stays focused on its intended source
- Built on Scryfall bulk data instead of one-card-at-a-time requests
- Cached locally for faster repeat use
- Designed so search and filtering stay local after the dataset is available
- Daily results are deterministic for the current date and filter state
- Flutter
- Dart
- Provider
- Scryfall bulk data
- Shared preferences and local file storage
- WebView for embedded site browsing
providerhttpshared_preferencespath_providercached_network_imageintlurl_launcherimage_gallery_saverflutter_svgwebview_flutter
- Flutter SDK
- Dart SDK
- Xcode for iOS and macOS builds
- Android SDK for Android builds
flutter pub getflutter runlib/
├── main.dart
├── models/
│ ├── cards/
│ ├── filters/
│ └── service/
├── screens/
│ ├── acknowledgements/
│ ├── brackets/
│ ├── card_search/
│ ├── home/
│ ├── land_guide/
│ ├── more/
│ ├── navigation/
│ ├── sites/
│ └── support/
├── services/
├── styles/
├── utils/
└── widgets/
- Card data is loaded from the local cache or refreshed from Scryfall bulk data.
- Spell and land filters are applied locally.
- A date-based deterministic seed builds the daily recommendation set.
- The app keeps those results stable until the filters or date change.
- Selecting a commander updates the active color identity and regenerates the daily page accordingly.
- The app is designed around Commander legality.
- Banned cards are excluded from daily recommendations.
- Search is local after the bulk dataset is available.
- The Sites screen intentionally blocks navigation outside the approved Wizards and EDHREC domains.
This project is licensed under the AGPL-3.0 License. See license.md.
- Scryfall for card data
- Flutter for the framework
- The Commander community for the format inspiration