# dachrisch/leaguesphere architecture

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

- Interactive diagram: https://gitdiagram.com/dachrisch/leaguesphere
- Repository: https://github.com/dachrisch/leaguesphere

## Overview

LeagueSphere is a Django-based sports league and gameday management application with several React interfaces. A typical organizer designs or schedules a gameday, records game results, and uses those results for standings and live or administrative views; officials and player eligibility have separate workflows. The tree and sampled files support the designer, schedule creation, ranking, and dashboard roles, but do not establish every endpoint-to-service call. The graph therefore shows the documented/runtime boundaries and omits uncertain wiring.

Main entry points: [`league_manager/urls.py`](https://github.com/dachrisch/leaguesphere/blob/master/league_manager/urls.py) (Django application), [`gameday_designer/views.py`](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/views.py) (Designer backend), [`gamedays/models.py`](https://github.com/dachrisch/leaguesphere/blob/master/gamedays/models.py) (Gameday data), [`gameday_designer/src/hooks/useDesignerController.ts`](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/hooks/useDesignerController.ts) (Designer controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gameday["Gameday planning"]
  node_designer_ui["Designer UI<br/>[App.tsx]"]
  node_designer_controller["Designer controller"]
  node_designer_api["Designer API<br/>[designerApi.ts]"]
  node_designer_backend["Designer backend<br/>[views.py]"]
  node_designer_services["Template services"]
  node_gameday_domain["Gameday services<br/>[gameday_service.py]"]
  node_schedule_manager["Schedule creation"]
  node_gameday_store[("Gameday data<br/>[models.py]")]
end

subgraph group_games["Game operations"]
  node_scorecard_ui["Scorecard UI<br/>[App.jsx]"]
  node_scorecard_backend["Scorecard backend<br/>[views.py]"]
  node_game_api["Game API<br/>[game_views.py]"]
  node_game_services["Game services<br/>[game_service.py]"]
end

subgraph group_league["League services"]
  node_officials["Officials management"]
  node_passcheck["Player eligibility"]
  node_standings_api["Standings API<br/>[views.py]"]
  node_ranking_engine["Ranking engine<br/>[engine.py]"]
  node_league_store[("League data<br/>[models.py]")]
end

subgraph group_insights["Live and insights"]
  node_liveticker["Live ticker<br/>[LivetickerApp.jsx]"]
  node_journey_dashboard["Journey dashboard<br/>[App.tsx]"]
  node_journey_api["Journey API<br/>[progress_views.py]"]
end

subgraph group_platform["Application platform"]
  node_django["Django application<br/>[urls.py]"]
end

node_organizer(("Organizer"))
node_user(("League user"))

node_organizer -->|"designs schedule"| node_designer_ui
node_designer_ui -->|"dispatches actions"| node_designer_controller
node_designer_controller -->|"generates tournament"| node_designer_services
node_designer_controller -->|"requests data"| node_designer_api
node_designer_api -->|"calls API"| node_designer_backend
node_designer_backend -->|"applies templates"| node_designer_services
node_designer_backend -->|"persists gameday"| node_gameday_store
node_organizer -->|"creates schedule"| node_schedule_manager
node_schedule_manager -->|"writes games"| node_gameday_store
node_user -->|"records results"| node_scorecard_ui
node_scorecard_ui -->|"submits game data"| node_scorecard_backend
node_scorecard_backend -->|"requests game data"| node_game_api
node_game_api -->|"handles game operations"| node_game_services
node_game_services -->|"reads game records"| node_gameday_store
node_game_services -->|"updates results"| node_gameday_store
node_user -->|"manages officials"| node_officials
node_user -->|"checks eligibility"| node_passcheck
node_user -->|"requests standings"| node_standings_api
node_standings_api -->|"computes rankings"| node_ranking_engine
node_ranking_engine -->|"uses league rules"| node_league_store
node_user -->|"views live games"| node_liveticker
node_user -->|"views progress"| node_journey_dashboard
node_journey_dashboard -->|"fetches metrics"| node_journey_api
node_django -->|"routes requests"| node_designer_backend
node_django -->|"routes requests"| node_game_api
node_django -->|"routes requests"| node_standings_api
node_django -->|"routes requests"| node_journey_api

click node_designer_ui "https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/App.tsx"
click node_designer_controller "https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/hooks/useDesignerController.ts"
click node_designer_api "https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/api/designerApi.ts"
click node_designer_backend "https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/views.py"
click node_designer_services "https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/service/template_application_service.py"
click node_gameday_domain "https://github.com/dachrisch/leaguesphere/blob/master/gamedays/service/gameday_service.py"
click node_schedule_manager "https://github.com/dachrisch/leaguesphere/blob/master/gamedays/management/schedule_manager.py"
click node_gameday_store "https://github.com/dachrisch/leaguesphere/blob/master/gamedays/models.py"
click node_scorecard_ui "https://github.com/dachrisch/leaguesphere/blob/master/scorecard/src/components/App.jsx"
click node_scorecard_backend "https://github.com/dachrisch/leaguesphere/blob/master/scorecard/views.py"
click node_game_api "https://github.com/dachrisch/leaguesphere/blob/master/gamedays/api/game_views.py"
click node_game_services "https://github.com/dachrisch/leaguesphere/blob/master/gamedays/service/game_service.py"
click node_officials "https://github.com/dachrisch/leaguesphere/blob/master/officials/service/official_service.py"
click node_passcheck "https://github.com/dachrisch/leaguesphere/blob/master/passcheck/service/passcheck_service.py"
click node_standings_api "https://github.com/dachrisch/leaguesphere/blob/master/league_table/api/views.py"
click node_ranking_engine "https://github.com/dachrisch/leaguesphere/blob/master/league_table/service/ranking/engine.py"
click node_league_store "https://github.com/dachrisch/leaguesphere/blob/master/league_table/models.py"
click node_liveticker "https://github.com/dachrisch/leaguesphere/blob/master/liveticker/src/components/LivetickerApp.jsx"
click node_journey_dashboard "https://github.com/dachrisch/leaguesphere/blob/master/journey_dashboard/src/App.tsx"
click node_journey_api "https://github.com/dachrisch/leaguesphere/blob/master/journey/api/progress_views.py"
click node_django "https://github.com/dachrisch/leaguesphere/blob/master/league_manager/urls.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_designer_ui,node_designer_controller,node_designer_api,node_designer_backend,node_designer_services,node_gameday_domain,node_schedule_manager,node_gameday_store,node_user toneBlue
class node_scorecard_ui,node_scorecard_backend,node_game_api,node_game_services toneAmber
class node_officials,node_passcheck,node_standings_api,node_ranking_engine,node_league_store toneMint
class node_liveticker,node_journey_dashboard,node_journey_api toneRose
class node_django,node_organizer toneIndigo
```

## Components

### Gameday planning

- [Designer UI](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/App.tsx): `gameday_designer/src/App.tsx`
- [Designer controller](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/hooks/useDesignerController.ts): `gameday_designer/src/hooks/useDesignerController.ts`
- [Designer API](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/src/api/designerApi.ts): `gameday_designer/src/api/designerApi.ts`
- [Designer backend](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/views.py): `gameday_designer/views.py`
- [Template services](https://github.com/dachrisch/leaguesphere/blob/master/gameday_designer/service/template_application_service.py): `gameday_designer/service/template_application_service.py`
- [Gameday services](https://github.com/dachrisch/leaguesphere/blob/master/gamedays/service/gameday_service.py): `gamedays/service/gameday_service.py`
- [Schedule creation](https://github.com/dachrisch/leaguesphere/blob/master/gamedays/management/schedule_manager.py): `gamedays/management/schedule_manager.py`
- [Gameday data](https://github.com/dachrisch/leaguesphere/blob/master/gamedays/models.py): `gamedays/models.py`

### Game operations

- [Scorecard UI](https://github.com/dachrisch/leaguesphere/blob/master/scorecard/src/components/App.jsx): `scorecard/src/components/App.jsx`
- [Scorecard backend](https://github.com/dachrisch/leaguesphere/blob/master/scorecard/views.py): `scorecard/views.py`
- [Game API](https://github.com/dachrisch/leaguesphere/blob/master/gamedays/api/game_views.py): `gamedays/api/game_views.py`
- [Game services](https://github.com/dachrisch/leaguesphere/blob/master/gamedays/service/game_service.py): `gamedays/service/game_service.py`

### League services

- [Officials management](https://github.com/dachrisch/leaguesphere/blob/master/officials/service/official_service.py): `officials/service/official_service.py`
- [Player eligibility](https://github.com/dachrisch/leaguesphere/blob/master/passcheck/service/passcheck_service.py): `passcheck/service/passcheck_service.py`
- [Standings API](https://github.com/dachrisch/leaguesphere/blob/master/league_table/api/views.py): `league_table/api/views.py`
- [Ranking engine](https://github.com/dachrisch/leaguesphere/blob/master/league_table/service/ranking/engine.py): `league_table/service/ranking/engine.py`
- [League data](https://github.com/dachrisch/leaguesphere/blob/master/league_table/models.py): `league_table/models.py`

### Live and insights

- [Live ticker](https://github.com/dachrisch/leaguesphere/blob/master/liveticker/src/components/LivetickerApp.jsx): `liveticker/src/components/LivetickerApp.jsx`
- [Journey dashboard](https://github.com/dachrisch/leaguesphere/blob/master/journey_dashboard/src/App.tsx): `journey_dashboard/src/App.tsx`
- [Journey API](https://github.com/dachrisch/leaguesphere/blob/master/journey/api/progress_views.py): `journey/api/progress_views.py`

### Application platform

- [Django application](https://github.com/dachrisch/leaguesphere/blob/master/league_manager/urls.py): `league_manager/urls.py`

### Other components

- **Organizer**
- **League user**

## Connections

- Organizer → Designer UI: designs schedule
- Designer UI → Designer controller: dispatches actions
- Designer controller → Template services: generates tournament
- Designer controller → Designer API: requests data
- Designer API → Designer backend: calls API
- Designer backend → Template services: applies templates
- Designer backend → Gameday data: persists gameday
- Organizer → Schedule creation: creates schedule
- Schedule creation → Gameday data: writes games
- League user → Scorecard UI: records results
- Scorecard UI → Scorecard backend: submits game data
- Scorecard backend → Game API: requests game data
- Game API → Game services: handles game operations
- Game services → Gameday data: reads game records
- Game services → Gameday data: updates results
- League user → Officials management: manages officials
- League user → Player eligibility: checks eligibility
- League user → Standings API: requests standings
- Standings API → Ranking engine: computes rankings
- Ranking engine → League data: uses league rules
- League user → Live ticker: views live games
- League user → Journey dashboard: views progress
- Journey dashboard → Journey API: fetches metrics
- Django application → Designer backend: routes requests
- Django application → Game API: routes requests
- Django application → Standings API: routes requests
- Django application → Journey API: routes requests
