Files
mtgonline/backend
akadmin 900f51af3a Complete architecture simplification: 54+ files → 37 files
- Removed 11 duplicate router files (auth.py, users.py, decks.py, card_router.py, interactions.py, user_data.py, rooms.py, games/router.py, refresh.py, card_import.py, ws.py)
- Removed duplicate core files (logging_config.py, settings.py)
- Removed unused services (card_mirror_service.py, mtgjson_loader.py, mtgjson_uploader.py)
- Removed unused schemas (proto_messages.py, protocol_constants.py)
- Created run.py startup script for simple execution
- Created app/core/config.py for unified configuration management
- Created app/core/logging.py for logging configuration
- Consolidated routers into 6 focused files (auth_router.py, users_router.py, decks_router.py, cards_router.py, user_data_router.py, games_router.py)
- Updated all imports to use consolidated model paths
- Added backward compatibility aliases in database.py
- Created SIMPLIFICATION_SUMMARY.md documentation

Architecture improvements:
- Single unified database engine with auto-detection (SQLite/PostgreSQL)
- Consolidated models into 2 files (models.py, mtg_models.py)
- Clean router structure with one file per domain
- Simplified configuration with sensible defaults
- SQLite by default for development, PostgreSQL for production

Testing:
- All imports verified working
- App loads successfully
- Ready for development and testing
2026-08-26 15:15:36 +00:00
..

MTG Online Backend

FastAPI application for processing MTG card data and managing user decks.

Overview

Python FastAPI application that:

  • Downloads and processes MTGJSON v5 data
  • Stores card data in PostgreSQL (mtgdata database)
  • Manages user accounts, decks, and card imports
  • Exposes REST API for deckbuilding and card search

Key Features

  • MTGJSON Data Pipeline — Downloads and upserts MTGJSON v5 dataset
  • Card Import — Users import card collections with fuzzy matching
  • Deck Management — Create, edit, and finalize decks with precedents
  • Card Search — Fast card lookup for deckbuilding
  • JWT Authentication — Secured API endpoints

API Endpoints

Card Import (/api/v1/card-import/)

Method Endpoint Description
GET /status Get import status
POST / Import/update cards
DELETE / Delete import
GET /summary Match results summary

User Data (/api/v1/user-data/)

Method Endpoint Description
GET/PUT /profile User profile
GET /collection Card collection
GET /groups User groups
GET /preferences User preferences
GET /replays User replays

Decks (/api/v1/decks/)

Method Endpoint Description
CRUD /{deck_id} Deck management
POST /{deck_id}/cards Add card to deck
POST /{deck_id}/finalize Finalize deck
POST /search/cards Search cards
CRUD /precedents/ Deck precedents
CRUD /suggestions/ Card suggestions

Tech Stack

  • Language: Python 3.12
  • Framework: FastAPI
  • Database: PostgreSQL (async via asyncpg)
  • ORM: SQLAlchemy 2.0
  • Migrations: Alembic
  • Cache: Redis
  • Auth: JWT (python-jose + bcrypt)

Running Locally

# Start services
docker compose -f ../docker-compose.dev.yml up -d

# Run migrations
cd app && alembic upgrade head

# Access API
curl http://localhost:5555/health

Migrations

# Create new migration
alembic revision --autogenerate -m "description"

# Run migrations
alembic upgrade head

# Rollback
alembic downgrade -1

License

MIT