# krishanu-datta/sports-draft architecture

> Architecture diagram of the GitHub repository krishanu-datta/sports-draft, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/krishanu-datta/sports-draft
- Repository: https://github.com/krishanu-datta/sports-draft
- Video tour (about a minute): https://gitdiagram.com/krishanu-datta/sports-draft/video

## Overview

sports-draft is a Streamlit sports draft-room app: users select leagues and participants, draft teams in a snake-style room, then review standings and pick analytics. The sampled source shows probability refresh, draft-pool setup, pick normalization/commitment, and analytics calls, all within draft.py. The README provides no capability detail, and source excerpts omit parts of the app, so uncertain wiring and persistence are not represented.

Main entry points: [`draft.py`](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py) (Streamlit app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_draft["Draft workflow"]
  node_streamlit["Streamlit app<br/>[draft.py]"]
  node_setup["Draft setup<br/>[draft.py]"]
  node_league_select["League selection<br/>[draft.py]"]
  node_draft_pool["Draft pool<br/>[draft.py]"]
  node_draft_room["Draft room<br/>[draft.py]"]
  node_pick_normalize["Pick normalization<br/>[draft.py]"]
  node_pick_commit["Pick commitment<br/>[draft.py]"]
end

subgraph group_data["Probability data"]
  node_prob_refresh["Probability refresh<br/>[draft.py]"]
  node_event_fetch["Event fetch<br/>[draft.py]"]
end

subgraph group_analytics["Draft analytics"]
  node_field_resolution["Field resolution<br/>[draft.py]"]
  node_standings["Winners standings<br/>[draft.py]"]
  node_top_picks["Top selections<br/>[draft.py]"]
  node_ownership["League ownership<br/>[draft.py]"]
  node_analytics_view["Analytics view<br/>[draft.py]"]
end

node_drafter(("Drafter"))
node_external_api["Market API"]

node_drafter -->|"uses"| node_streamlit
node_streamlit -->|"renders"| node_setup
node_setup -->|"selects leagues"| node_league_select
node_setup -->|"refreshes probabilities"| node_prob_refresh
node_prob_refresh -->|"fetches events"| node_event_fetch
node_event_fetch -->|"requests markets"| node_external_api
node_setup -->|"builds pool"| node_draft_pool
node_streamlit -->|"opens room"| node_draft_room
node_drafter -->|"makes picks"| node_draft_room
node_draft_room -->|"normalizes pick"| node_pick_normalize
node_draft_room -->|"commits pick"| node_pick_commit
node_streamlit -->|"resolves drafts"| node_field_resolution
node_streamlit -->|"refreshes probabilities"| node_prob_refresh
node_streamlit -->|"builds standings"| node_standings
node_streamlit -->|"builds selections"| node_top_picks
node_streamlit -->|"builds ownership"| node_ownership
node_streamlit -->|"renders analytics"| node_analytics_view
node_standings -->|"provides standings"| node_analytics_view
node_top_picks -->|"provides selections"| node_analytics_view
node_ownership -->|"provides ownership"| node_analytics_view

click node_streamlit "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_setup "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_league_select "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_draft_pool "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_draft_room "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_pick_normalize "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_pick_commit "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_prob_refresh "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_event_fetch "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_field_resolution "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_standings "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_top_picks "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_ownership "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"
click node_analytics_view "https://github.com/krishanu-datta/sports-draft/blob/main/draft.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_streamlit,node_setup,node_league_select,node_draft_pool,node_draft_room,node_pick_normalize,node_pick_commit toneBlue
class node_prob_refresh,node_event_fetch toneAmber
class node_field_resolution,node_standings,node_top_picks,node_ownership,node_analytics_view,node_external_api toneMint
class node_drafter toneIndigo
```

## Components

### Draft workflow

- [Streamlit app](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Draft setup](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [League selection](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Draft pool](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Draft room](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Pick normalization](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Pick commitment](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`

### Probability data

- [Probability refresh](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Event fetch](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`

### Draft analytics

- [Field resolution](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Winners standings](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Top selections](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [League ownership](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`
- [Analytics view](https://github.com/krishanu-datta/sports-draft/blob/main/draft.py): `draft.py`

### Other components

- **Drafter**
- **Market API**

## Connections

- Drafter → Streamlit app: uses
- Streamlit app → Draft setup: renders
- Draft setup → League selection: selects leagues
- Draft setup → Probability refresh: refreshes probabilities
- Probability refresh → Event fetch: fetches events
- Event fetch → Market API: requests markets
- Draft setup → Draft pool: builds pool
- Streamlit app → Draft room: opens room
- Drafter → Draft room: makes picks
- Draft room → Pick normalization: normalizes pick
- Draft room → Pick commitment: commits pick
- Streamlit app → Field resolution: resolves drafts
- Streamlit app → Probability refresh: refreshes probabilities
- Streamlit app → Winners standings: builds standings
- Streamlit app → Top selections: builds selections
- Streamlit app → League ownership: builds ownership
- Streamlit app → Analytics view: renders analytics
- Winners standings → Analytics view: provides standings
- Top selections → Analytics view: provides selections
- League ownership → Analytics view: provides ownership
