README.md 2.2 KB

Drafter

A web-based assistant for Magic: The Gathering Limited players.

Load your drafts from 17Lands and analyse your picks.

⚠️ Early development

Drafter is pre-alpha software. It's very incomplete. Expect bugs and breaking changes.


Project structure

Path Purpose
src/ Elm source for the front-end UI
css/, tailwind.config.js Tailwind CSS styling
html/ Static HTML entry point served by Parcel
server/ FastAPI backend that exposes set/card endpoints
data/ Raw data files and helper scripts used to generate JSON served by the backend

Prerequisites

Front-end

  • Node ≥ 14 and npm (or yarn)

Back-end

  • Python ≥ 3.10
  • (Recommended) virtualenv or pyenv

Running locally

1. Clone & install

# clone and enter the repo
# git clone https://github.com/kdelwat/drafter.git
cd drafter

# Front-end deps
npm install

# Back-end deps (inside a venv)
python3 -m venv .venv
source .venv/bin/activate
pip install fastapi uvicorn[standard] httpx

2. Start development servers

Service Command URL
UI (Parcel) npm run start http://localhost:1234
API (FastAPI) uvicorn server.main:app --reload --port 8000 http://localhost:8000

The UI is configured to call the API on localhost:8000 during development via CORS.

3. Build for production (optional)

npm run build   # outputs static assets to dist/

4. Running tests

There are a few frontend tests, run with:

elm-test

Generating & adding new set data

  1. Create a new folder in data/sets

Named after the set code, e.g. data/sets/eoe.

  1. Download card ratings

Log in to 17lands, go to card data, select the set, premier draft format, and top users, then switch to table view.

Click export and download the CSV file.

Save to data/sets/<CODE>/card-ratings-all.csv

  1. Download updated card data from Scryfall

Go to https://scryfall.com/docs/api/bulk-data and download the Oracle Cards JSON file.

Move it to data/cards/oracle-cards.json.

  1. Generate the set data

    cd data
    python generate_card_ratings.py