No Description

Cadel Watson f500ae1560 add public url 4 months ago
.idea 4a1545bb91 Remove data files 4 months ago
css 01e5d152c2 Improve styles and navigation; add mobile warning 4 months ago
data 4d2a94be31 Remove data files 4 months ago
html 2683cffca0 Add docs 4 months ago
js 01e5d152c2 Improve styles and navigation; add mobile warning 4 months ago
server 8d0e5ab45a Update for deployment 4 months ago
src 8d0e5ab45a Update for deployment 4 months ago
tests 9339ad2982 Load draft from 17lands public URL 4 months ago
.gitignore 2266622c76 Update .gitignore 4 months ago
.postcssrc.json 0c4311efc0 Show highlighted card 1 year ago
README.md f500ae1560 add public url 4 months ago
elm.json 3f2d7f6622 WIP: load drafts straight from 17lands 4 months ago
package-lock.json a1e4bd2949 Add card explorer 4 months ago
package.json a1e4bd2949 Add card explorer 4 months ago
requirements.txt 2683cffca0 Add docs 4 months ago
tailwind.config.js 60a32d54c9 Colourise stats 1 year ago
update_and_release.sh afacf2e742 Add release script 4 months ago

README.md

Drafter

[!TIP] Access a hosted version of Drafter here.

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