- Add card import feature with fuzzy matching - Implement deck CRUD and management endpoints - Add user data APIs for groups, networks, preferences, activity, replays - Create comprehensive API documentation (API_DOCUMENTATION.md) - Add ENDPOINT_AUDIT.md for endpoint verification - Update documentation (README, ROADMAP, state.json) - Update architecture blueprint and Cockatrice analysis - All Phase 2 deliverables complete and documented
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