# Drafter > [!TIP] > Access a hosted version of Drafter [here](https://drafter.cadelwatson.com). A web-based assistant for Magic: The Gathering Limited players. Load your drafts from [17Lands](https://www.17lands.com/) 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 ```bash # 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) ```bash npm run build # outputs static assets to dist/ ``` ### 4. Running tests There are a few frontend tests, run with: ```bash elm-test ``` --- ## Generating & adding new set data 0. 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//card-ratings-all.csv` 2. 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`. 3. Generate the set data ```bash cd data python generate_card_ratings.py ```