Skip to content

ethpec/MaddenDraftTool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Madden Draft Tool

Run the NFL draft outside Madden so we can apply richer trade and pick logic, then export results in a shape Madden can re-import. Local web app — Python backend, JavaScript frontend, opens in any browser.

What it does

  • Loads a draft year's data from Files/<year>/ (BigBoard, current rosters, pick order, GM traits, position needs, pick value chart).
  • Lets you (controlling the Steelers) draft your own players, sim other teams' picks, sim to your next pick, sim to a chosen round, or sim to any overall pick number.
  • AI teams will make picks (and eventually trades) based on their own big board, GM traits, and team needs — see backend/logic.py for the contract; the heuristics are placeholder shells today.
  • You can offer trade-ups to any team's pick; when their pick is up, you can review trade-down offers from AI teams.
  • Exports three xlsx files for re-import / inspection:
    • DraftPickOutcome.xlsx — every pick + the player drafted.
    • DraftPicks_updated.xlsx — same shape as input, with new CurrentTeam ownership and SelectedPlayer filled in.
    • Trades.xlsx — chronological trade log (for testing).

Run it

Requires Python 3.10+.

macOS / Linux (bash/zsh):

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python app.py

Windows (PowerShell):

python -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt
.\.venv\Scripts\python app.py

If PowerShell blocks the activation script with a security error, you can either run the commands above directly (they don't need the venv "activated" — they invoke the venv's pip and python by path) or loosen the policy for the current session with Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned.

Then open http://localhost:5050. Pick a year on the setup screen (today only TestFiles is present) and click Start Draft.

Adding a new draft year

Drop the source files under Files/<year>/ matching the names in Files/TestFiles/:

Files/2026/
  BigBoard.xlsx
  Player.xlsx
  DraftPicks.xlsx
  GMInfo.xlsx
  PositionNeeds.xlsx
  DraftPickValue.xlsx
  DraftMaxPerPosition.xlsx
  all_colleges.json   (optional)

Restart the server; the year shows up in the dropdown automatically. If the requested year folder is missing, the loader falls back to Files/TestFiles/.

UI overview

  • On the Clock (top left): which team is picking now. When it's the Steelers, you get Check Trade-Down Offers and Offer Trade Up buttons.
  • Last Selection (left): most recent player drafted.
  • Team Needs (left): position weakness ranking for whoever is on the clock.
  • Current Round (center): 4×8 grid of the visible round; highlights the on-the-clock pick (pulsing green) and Steelers picks (gold). Round dropdown switches the view.
  • Mel Kiper Best Available (center): public consensus board. When Steelers are on the clock, each row gets a Draft button.
  • Team Big Boards (right): private per-team rankings. Mostly for testing how AI logic ranks players.
  • Top bar buttons: Sim Pick (one AI pick), Sim to My Pick, Sim to Round…, Full Draft Order (modal showing the entire draft as a 4-wide grid), Export (downloads all three xlsx files).

Project layout

app.py                Flask entry + HTTP routes
backend/
  data_loader.py      Reads xlsx/json from Files/<year>/
  draft_state.py      Pick order, on-the-clock, drafted players, trades
  logic.py            Decision functions (placeholder shells)
  exporter.py         Writes the three output xlsx files
templates/index.html  App shell
static/js/app.js      All frontend behavior
static/css/app.css    Custom styling layered on Tailwind CDN
Files/                Per-year source data + Exports/ (gitignored)

See CLAUDE.md for engineering notes (data quirks, team-ID-space mismatch, what's stubbed vs. real).

Status

The plumbing — data load, draft state, API, UI, export — is real and end-to-end. The decision functions in backend/logic.py are placeholders with full docstrings describing the real algorithm. They will be filled in iteratively without changing their signatures.

About

Application to perform a Madden Rookie Draft

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors