Nessuna descrizione

Cadel Watson 2683cffca0 Add docs 4 mesi fa
.idea 4a1545bb91 Remove data files 4 mesi fa
css 01e5d152c2 Improve styles and navigation; add mobile warning 4 mesi fa
data 4d2a94be31 Remove data files 4 mesi fa
html 2683cffca0 Add docs 4 mesi fa
js 01e5d152c2 Improve styles and navigation; add mobile warning 4 mesi fa
server 2683cffca0 Add docs 4 mesi fa
src 01e5d152c2 Improve styles and navigation; add mobile warning 4 mesi fa
tests 9339ad2982 Load draft from 17lands public URL 4 mesi fa
.gitignore 4d2a94be31 Remove data files 4 mesi fa
.postcssrc.json 0c4311efc0 Show highlighted card 1 anno fa
README.md 2683cffca0 Add docs 4 mesi fa
elm.json 3f2d7f6622 WIP: load drafts straight from 17lands 4 mesi fa
package-lock.json a1e4bd2949 Add card explorer 4 mesi fa
package.json a1e4bd2949 Add card explorer 4 mesi fa
requirements.txt 2683cffca0 Add docs 4 mesi fa
tailwind.config.js 60a32d54c9 Colourise stats 1 anno fa

README.md

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