A web application for Magic: The Gathering players to track their match history, analyze win rates, and improve their game performance.
-
Match Recording: Track matches with detailed information:
- Your deck choice
- Opponent's deck
- Format (Standard, Modern, Pioneer, etc.)
- Game results (Best of 3)
- Optional opponent name
-
Deck Management:
- Auto-populated deck lists from MTGGoldfish metagame data
- Add custom decks on the fly
- Format-specific deck lists
-
Statistics:
- Visual win/loss ratio with charts
- Overall win rate percentage
- Match history with timestamps
-
User Features:
- User authentication
- Persistent match history storage
- Dark/Light theme toggle
- React 18
- Vite
- Firebase Authentication
- Chart.js for statistics
- Web scraping capabilities for deck data
- Clone the repository
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Create a Firebase project
- Enable Email/Password and Google authentication
- Copy your Firebase configuration
- Update
src/firebase.js
with your config:const firebaseConfig = { apiKey: "your-api-key", authDomain: "your-auth-domain", projectId: "your-project-id", storageBucket: "your-storage-bucket", messagingSenderId: "your-messaging-sender-id", appId: "your-app-id" };
The application uses two sources for deck data:
- Web scraping from MTGGoldfish (updated via
npm run scrape
) - Fallback default deck lists
To update deck data manually:
npm run scrape # Basic scraping
npm run scrape:debug # Scraping with detailed logs
- Record match results in a Best of 3 format
- Track both your deck and your opponent's deck
- Optional opponent name recording
- Format selection for proper deck list filtering
- Visual representation of win/loss ratio
- Detailed match history with timestamps
- Format-specific statistics
- Light and dark mode support
- Persistent theme preference
- Automatic system theme detection
- Email/Password registration and login
- Google authentication
- Persistent session management
src/
├── components/ # React components
├── contexts/ # Context providers
├── data/ # Static data and defaults
├── hooks/ # Custom React hooks
├── utils/ # Utility functions
└── firebase.js # Firebase configuration
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
MIT License - feel free to use this project for personal or commercial purposes.