# matozanato/footballlife-new-leagues architecture

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

- Interactive diagram: https://gitdiagram.com/matozanato/footballlife-new-leagues
- Repository: https://github.com/matozanato/footballlife-new-leagues

## Overview

FootballLife combines FL Mod Studio, a Windows desktop application for managing Football Life 2026/2027 mods, with tools for building custom league worlds. Users configure a game, then either install a ready world or edit a league recipe and build/install it; worlds can also be exported and switched. Distinct capabilities include the NewLife real-club database, player and squad editing, content-server mods, Sider setup, backups, and diagnostics. The graph follows documented workflows and visible module references; unsampled pages are represented only where the README establishes their capability.

Main entry points: [`tools/modstudio/installer.py`](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/installer.py) (Mod Installer), [`tools/leaguebuilder.py`](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/leaguebuilder.py) (World Builder), [`tools/modstudio/app.py`](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/app.py) (Studio Window), [`tools/modstudio/pages/myworld.py`](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/myworld.py) (World Manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_studio["Mod Studio"]
  node_app["Studio Window<br/>[app.py]"]
  node_ui["Shared UI<br/>[ui.py]"]
  node_myworld["World Manager<br/>[myworld.py]"]
  node_diagnostics["Diagnostics<br/>[diagnostics.py]"]
end

subgraph group_worlds["World Building"]
  node_builderpage["League Builder UI<br/>[builder.py]"]
  node_newlife["NewLife Database<br/>[newlife.py]"]
  node_leaguebuilder["World Builder<br/>[leaguebuilder.py]"]
  node_players["Squad Editor<br/>[players.py]"]
  node_playerdata["Player Data<br/>[lbplayers.py]"]
end

subgraph group_content["Mods and Content"]
  node_installer["Mod Installer<br/>[installer.py]"]
  node_contentpage["Content Servers<br/>[content.py]"]
  node_servers["Server Manager<br/>[servers.py]"]
end

subgraph group_game["Game Integration"]
  node_pesdb["Game Tables<br/>[pesdb.py]"]
  node_worldstate["World Switching<br/>[worlds.py]"]
  node_sider["Sider Configuration<br/>[siderini.py]"]
  node_backups[("Restore Points<br/>[backups.py]")]
  node_profiles["Profiles<br/>[profiles.py]"]
end

node_user(("Modder"))
node_externalgame["Football Life"]

node_user -->|"opens"| node_app
node_app -->|"uses"| node_ui
node_app -->|"opens page"| node_myworld
node_myworld -->|"installs pack"| node_installer
node_myworld -->|"manages worlds"| node_worldstate
node_user -->|"edits leagues"| node_builderpage
node_builderpage -->|"builds recipe"| node_leaguebuilder
node_builderpage -->|"selects database"| node_newlife
node_newlife -->|"plans leagues"| node_leaguebuilder
node_players -->|"edits squads"| node_playerdata
node_playerdata -->|"reads tables"| node_pesdb
node_leaguebuilder -->|"reads game data"| node_pesdb
node_user -->|"manages content"| node_contentpage
node_contentpage -->|"manages servers"| node_servers
node_user -->|"imports mod"| node_installer
node_installer -->|"updates content"| node_servers
node_installer -->|"configures Sider"| node_sider
node_installer -->|"creates restore points"| node_backups
node_worldstate -->|"switches world"| node_sider
node_worldstate -->|"backs up changes"| node_backups
node_profiles -->|"manages profiles"| node_sider
node_leaguebuilder -->|"writes game world"| node_externalgame
node_installer -->|"installs game mods"| node_externalgame
node_user -->|"requests report"| node_diagnostics

click node_app "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/app.py"
click node_ui "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/ui.py"
click node_myworld "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/myworld.py"
click node_builderpage "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/builder.py"
click node_newlife "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/newlife.py"
click node_leaguebuilder "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/leaguebuilder.py"
click node_players "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/players.py"
click node_playerdata "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/lbplayers.py"
click node_pesdb "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/pesdb.py"
click node_installer "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/installer.py"
click node_contentpage "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/content.py"
click node_servers "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/servers.py"
click node_worldstate "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/worlds.py"
click node_sider "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/siderini.py"
click node_backups "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/backups.py"
click node_diagnostics "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/diagnostics.py"
click node_profiles "https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/profiles.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_app,node_ui,node_myworld,node_diagnostics toneBlue
class node_builderpage,node_newlife,node_leaguebuilder,node_players,node_playerdata toneAmber
class node_installer,node_contentpage,node_servers toneMint
class node_pesdb,node_worldstate,node_sider,node_backups,node_profiles toneRose
class node_user,node_externalgame toneIndigo
```

## Components

### Mod Studio

- [Studio Window](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/app.py): `tools/modstudio/app.py`
- [Shared UI](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/ui.py): `tools/modstudio/ui.py`
- [World Manager](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/myworld.py): `tools/modstudio/pages/myworld.py`
- [Diagnostics](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/diagnostics.py): `tools/modstudio/pages/diagnostics.py`

### World Building

- [League Builder UI](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/builder.py): `tools/modstudio/pages/builder.py`
- [NewLife Database](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/newlife.py): `tools/modstudio/newlife.py`
- [World Builder](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/leaguebuilder.py): `tools/leaguebuilder.py`
- [Squad Editor](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/players.py): `tools/modstudio/pages/players.py`
- [Player Data](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/lbplayers.py): `tools/lbplayers.py`

### Mods and Content

- [Mod Installer](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/installer.py): `tools/modstudio/installer.py`
- [Content Servers](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/pages/content.py): `tools/modstudio/pages/content.py`
- [Server Manager](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/servers.py): `tools/modstudio/servers.py`

### Game Integration

- [Game Tables](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/pesdb.py): `tools/pesdb.py`
- [World Switching](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/worlds.py): `tools/modstudio/worlds.py`
- [Sider Configuration](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/siderini.py): `tools/modstudio/siderini.py`
- [Restore Points](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/backups.py): `tools/modstudio/backups.py`
- [Profiles](https://github.com/matozanato/footballlife-new-leagues/blob/main/tools/modstudio/profiles.py): `tools/modstudio/profiles.py`

### Other components

- **Modder**
- **Football Life**

## Connections

- Modder → Studio Window: opens
- Studio Window → Shared UI: uses (evidence: `tools/modstudio/app.py`)
- Studio Window → World Manager: opens page (evidence: `tools/modstudio/app.py`)
- World Manager → Mod Installer: installs pack (evidence: `tools/modstudio/pages/myworld.py`)
- World Manager → World Switching: manages worlds (evidence: `tools/modstudio/pages/myworld.py`)
- Modder → League Builder UI: edits leagues
- League Builder UI → World Builder: builds recipe (evidence: `tools/modstudio/pages/builder.py`)
- League Builder UI → NewLife Database: selects database (evidence: `tools/modstudio/pages/builder.py`)
- NewLife Database → World Builder: plans leagues (evidence: `tools/modstudio/newlife.py`)
- Squad Editor → Player Data: edits squads (evidence: `tools/modstudio/pages/players.py`)
- Player Data → Game Tables: reads tables (evidence: `tools/lbplayers.py`)
- World Builder → Game Tables: reads game data (evidence: `tools/leaguebuilder.py`)
- Modder → Content Servers: manages content
- Content Servers → Server Manager: manages servers (evidence: `tools/modstudio/pages/content.py`)
- Modder → Mod Installer: imports mod
- Mod Installer → Server Manager: updates content (evidence: `tools/modstudio/installer.py`)
- Mod Installer → Sider Configuration: configures Sider (evidence: `tools/modstudio/installer.py`)
- Mod Installer → Restore Points: creates restore points (evidence: `tools/modstudio/installer.py`)
- World Switching → Sider Configuration: switches world (evidence: `tools/modstudio/worlds.py`)
- World Switching → Restore Points: backs up changes (evidence: `tools/modstudio/worlds.py`)
- Profiles → Sider Configuration: manages profiles
- World Builder → Football Life: writes game world
- Mod Installer → Football Life: installs game mods
- Modder → Diagnostics: requests report
