Datyedyeguy/mtg-collection-tracker

Learning project: Full-stack MTG collection tracker exploring ASP.NET Core, Blazor, PostgreSQL, Azure deployment, and GitHub Actions CI/CD

โ˜… 0Forks 0C#GitHub โ†—Compare

README

MTG Collection Tracker

A comprehensive web-based collection management system for Magic: The Gathering cards across multiple platforms.

Features

  • ๐Ÿ“ฆ Multi-Platform Support: Track collections in Paper, MTG Arena, and MTG Online
  • ๐ŸŽฏ Smart Imports: Support for Moxfield, Manabox, CSV, and direct MTGA/MTGO integration
  • ๐Ÿ“ Physical Location Tracking: Know exactly where your paper cards are (decks, binders, storage)
  • ๐ŸŽด Decklist Management: Store and organize your decklists
  • ๐Ÿ”„ Delta Imports: Efficiently update collections with only changes
  • ๐ŸŒ Web & Mobile: Responsive design with future native mobile app support
  • ๐Ÿ” Secure Authentication: Your collection data is private and secure
  • ๐Ÿ’ฐ Learning Project: Azure-hosted with <$150/month budget for exploring cloud services

Quick Start

For Users

  1. Visit the website: https://example.com (domain TBD - coming soon)
  2. Create an account: Sign up with your email
  3. Import your collection:
    • Paper: Upload CSV from Moxfield, Manabox, or other platforms
    • MTG Arena: Download and run our Windows desktop client
    • MTG Online: Export collection and upload the file

MTGA Client

The MTG Arena desktop client automatically extracts your collection from MTGA log files:

  1. Download: Latest Release
  2. Run the installer
  3. Enable in MTGA: Settings โ†’ Account โ†’ "Detailed Logs (Plugin Support)"
  4. Launch the MTG Collection Tracker client
  5. Click "Sync Collection" - logs are read and uploaded automatically

How it works: The client reads log files that MTGA writes locally using the official "Plugin Support" feature. Same method used by 17Lands and other popular trackers.

Requirements: Windows 10/11 or macOS, MTG Arena installed

Safety:

  • โœ… ToS-compliant (explicitly authorized by Wizards)
  • โœ… No code injection or memory modification
  • โœ… Zero account termination risk
  • โœ… Used by 17Lands, MTGA Assistant, and other endorsed tools

Technology Stack

  • Frontend: Blazor WebAssembly (.NET 10), Bootstrap CSS
  • Backend: ASP.NET Core 10 Web API, PostgreSQL
  • Desktop Client: Avalonia UI (.NET 10) with auto-update via Velopack (future)
  • Hosting: Azure (Static Web Apps + App Service)
  • Infrastructure: Azure Bicep (Infrastructure as Code)

Project Status

๐Ÿšง In Active Development - Not yet publicly available

Current phase: Phase 3 - Scryfall Integration & Card Management

Completed:

  • โœ… Authentication (Register, Login, JWT + Refresh Tokens)
  • โœ… Collections CRUD (view, add, edit, delete with pagination and filtering)
  • โœ… Card search and detail pages (Scryfall data integration)
  • โœ… Database schema (Users, Cards, Collections)
  • โœ… 147 tests (138 passing, 9 skipped pending HTTP mocking)

Next:

  • ๐Ÿ”„ Import/export features (Moxfield CSV, Manabox CSV)
  • ๐Ÿ”„ Card details modal enhancements
  • ๐Ÿ”„ Azure deployment & CI/CD (Phase 4)

See ROADMAP.md for detailed progress.

Development

Prerequisites

  • .NET 10 SDK
  • PostgreSQL 14+ (or Docker for local development)
  • Azure CLI (for deployments - optional for local dev)
  • Visual Studio 2022 or VS Code

Local Setup

# Clone repository
git clone https://github.com/Datyedyeguy/mtg-collection-tracker.git
cd mtg-collection-tracker

# Start PostgreSQL (Docker)
docker compose up -d

# Backend API
cd src/backend/MTGCollectionTracker.Api
dotnet restore
dotnet run --launch-profile https

# Frontend (in new terminal)
cd src/frontend/MTGCollectionTracker.Client
dotnet restore
dotnet run --launch-profile https

# Desktop Client (future - Phase 4)
cd src/desktop/MTGALogParser
dotnet restore
dotnet run

See docs/DEVELOPMENT.md for detailed setup instructions.

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Browser   โ”‚
โ”‚  (Blazor)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚ HTTPS
       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Static Web App  โ”‚         โ”‚   Desktop    โ”‚
โ”‚   (Frontend)    โ”‚         โ”‚   Client     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ”‚  (Avalonia)  โ”‚
       โ”‚                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                            โ”‚
       โ”‚ REST API                   โ”‚ MTGA Log Parsing
       โ–ผ                            โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   App Service   โ”‚         โ”‚  MTG Arena   โ”‚
โ”‚  (.NET 10 API)  โ”‚         โ”‚  Log Files   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   PostgreSQL    โ”‚
โ”‚   (Card Data +  โ”‚
โ”‚   Collections)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

See docs/ARCHITECTURE.md for detailed system design.

Contributing

This is a personal learning project. See CONTRIBUTING.md for details.

Cost Transparency

Monthly Azure costs (with optimizations):

  • Azure App Service (Linux B1): ~$13/month
  • PostgreSQL Flexible Server (B1ms): ~$12/month
  • Blob Storage: ~$1/month
  • Total: ~$26/month ($312/year)

With Visual Studio Enterprise subscription: Effectively FREE (includes $150/month Azure credits)

Security

  • โœ… Passwords hashed with BCrypt
  • โœ… JWT-based authentication
  • โœ… HTTPS enforced everywhere
  • โœ… SQL injection prevention (EF Core parameterization)
  • ๐Ÿ”„ Rate limiting on API endpoints (planned - Phase 5)
  • ๐Ÿ”„ Secrets stored in Azure Key Vault (planned - Phase 4)

Found a security issue? Please report it responsibly via GitHub Security Advisories (do not open public issues for security vulnerabilities).

License

This project is licensed under the MIT License - see LICENSE for details.

Acknowledgments

Roadmap

  • Phase 1: Project setup and architecture
  • Phase 2: Backend API with authentication
  • Phase 3: Scryfall integration & card management (in progress)
  • Phase 4: Azure deployment & CI/CD
  • Phase 5: Import/export features
  • Phase 6: Desktop MTGA client
  • Phase 7: Decklist management
  • Phase 8: Physical location tracking
  • Phase 9: Mobile apps
  • Phase 10: Advanced search and statistics

Support


Made with โค๏ธ for the MTG community

Contributors

Datyedyeguydependabot[bot]

Issues