Skip to content

mphinance/mana-vault

Repository files navigation

🃏 Mana Vault

Track your Magic: The Gathering collection like a stock portfolio — with price charts, technical analysis, daily movers, arbitrage detection, and tournament data.

Portfolio Dashboard

Features

📈 Portfolio Overview

KPI dashboard with total collection value, cost basis, P&L, and a 90-day portfolio value chart. Top gainers and losers by 30-day performance, plus breakdowns by binder and rarity.

📊 Price Charts with Technical Analysis

Interactive per-card price charts powered by Lightweight Charts. Includes EMA 8/21, SMA 50, Bollinger Bands, RSI, and signal detection (crossovers, overbought/oversold, BB breakouts). Switch between TCGPlayer, CardKingdom, and Cardmarket pricing.

Price Charts

📡 Daily Movers (MTGStocks)

Ingests daily movers from MTGStocks and cross-references with your collection. Filter by date, price type, or collection-only. Click any card in your collection to jump straight to its price chart.

Top Movers

⚡ Technical Signals

Surfaces cards in your collection with notable technical patterns — bullish EMA crossovers, RSI oversold conditions, Bollinger Band breakouts. Scan for buying or selling opportunities at a glance.

Signals

💰 Vendor Arbitrage Scanner

Finds cross-vendor price gaps >15% between TCGPlayer, CardKingdom, and Cardmarket. Exploit market inefficiencies with direct links to each vendor's buy page.

Arbitrage

📅 Events Calendar

Scrapes upcoming events from magic.gg and recent tournament results from MTGTop8. Calendar view with event dots, upcoming event cards with type badges, and a metagame snapshot showing top archetypes by format.

Events

📋 Full Collection Browser

Searchable, sortable, paginated table of every card in your collection with current prices, P&L, and period changes. Filter by binder, rarity, or name.

Collection

Data Pipeline

ManaBox CSV → preprocess.py → dashboard/public/data/*.json
AllPrices.json (MTGJSON 1.2GB) ─┘

preprocess.py — Single-pass streaming extraction of price history from MTGJSON's AllPrices.json. Computes technical indicators (EMA, SMA, RSI, Bollinger Bands), detects signals, calculates P&L, and identifies arbitrage opportunities.

update.py — Downloads fresh MTGJSON data and re-runs the preprocessor. python3 update.py for daily prices, --full for full 90-day history rebuild.

scrape_events.py — Playwright-based scraper for magic.gg schedule and MTGTop8 tournament results/metagame data.

Tech Stack

Quick Start

# Install dependencies
cd dashboard && npm install

# Export your collection from ManaBox as CSV
# Place ManaBox_Collection.csv in the project root

# Download MTGJSON price data
python3 update.py --full

# Run the preprocessor
python3 preprocess.py

# Start the dev server
cd dashboard && npm run dev

Hyperlinks

Every card name, price, and event links to external resources:

Element Links To
Card names Scryfall
Prices TCGPlayer / CardKingdom
Movers MTGStocks
Events magic.gg / MTGTop8

License

MIT

About

Track your Magic: The Gathering collection like a stock portfolio — price charts, technical analysis, arbitrage, and tournament data

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors