How john-alexander-611/edhbulkup works
EDH Bulk Up helps users find Commander decks that fit cards they own, then analyzes a selected deck and recommends ways to fill gaps. The main workflow is collection upload, filtered deck matching, and per-commander analysis with missing-card and replacement suggestions. The frontend calls a FastAPI backend; backend logic uses cached EDHREC deck data and Scryfall card and tag data. Cache-building paths are included as product data preparation, not deployment machinery. Some backend endpoint wiring is unsampled, so uncertain internal calls are omitted.
Main entry points: deck_service.py Deck service · main.py HTTP API · page.tsx Deck analysis view · commander_specific.py Replacement logic
Components 24
Web experience
- Deck search
frontend/app/page.tsx - Deck analysis view
frontend/app/commanders/[commanderName]/page.tsx - API client
frontend/lib/api.ts - TCGplayer links
frontend/lib/tcgplayer.ts
API and sessions
- HTTP API
app/main.py - API schemas
app/schemas.py
Deck analysis
- Deck service
services/deck_service.py - Collection parser
parse_input/parse_moxfield.py - Collection model
models/collection.py - Deck model
models/deck.py - Commander model
models/commander.py - Replacement logic
commander_specific.py - Analysis results
services/results.py
Cached data
- Commander deck cache
create_cache/commander_data.json - Card metadata cache
scryfall/cache_wrappers.py - Functional tag cache
scryfall/cache_wrappers.py
Data preparation
- EDHREC cache builder
create_cache/build_cache.py - EDHREC client
create_cache/edhrec_raw.py - Scryfall cache builder
scryfall/build_scryfall_cache.py - Tag cache builder
scryfall/build_tag_cache.py
Other components
- Collection owner
- EDHREC
- Scryfall
- TCGplayer
Connections 25
- Collection owner → Deck search: uses
- Deck search → API client: requests
- Deck analysis view → API client: requests
- API client → HTTP API: calls
- HTTP API → API schemas: validates
- HTTP API → Deck service: delegates
- Deck service → Collection parser: parses
- Deck service → Collection model: uses
- Deck service → Deck model: uses
- Deck service → Commander deck cache: loads
- Deck model → Commander model: uses
- Deck service → Replacement logic: requests suggestions
- Replacement logic → Functional tag cache: looks up tags
- Replacement logic → Card metadata cache: checks cards
- Deck service → Analysis results: builds results
- HTTP API → Card metadata cache: reads presentation data
- EDHREC cache builder → EDHREC client: fetches data
- EDHREC client → EDHREC: requests deck data
- EDHREC cache builder → Commander deck cache: writes
- Scryfall cache builder → Scryfall: downloads bulk data
- Scryfall cache builder → Card metadata cache: writes
- Tag cache builder → Scryfall: retrieves tag data
- Tag cache builder → Functional tag cache: writes
- Deck analysis view → TCGplayer links: opens purchase links
- Deck analysis view → TCGplayer: links to