- Updated DATABASE_URL default to postgres_platform:5432 - Updated MTG_DATABASE_URL default to postgres_mtgdata:5432 - Added MTG_MIRROR_DATABASE_URL for postgres_mirror:5432 - Updated REDIS_URL default to redis:6379 - These changes ensure the application works correctly in Docker deployment Prepares for comprehensive API testing with Docker deployment.
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 (
mtgdatadatabase) - 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