# whocares218/fm-27 architecture

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

- Interactive diagram: https://gitdiagram.com/whocares218/fm-27
- Repository: https://github.com/whocares218/fm-27

## Overview

This is an Android football-management simulator. The manager starts a career, manages a club and squad, makes tactical and transfer decisions, and advances matches and seasons while the game updates competitions and club finances; saved career state supports continued play. The map preserves the major game systems visible in the source tree. Several screens and engine modules are unsampled, so links without direct evidence are omitted or shown as unverified rather than treated as confirmed calls.

Main entry points: [`app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt) (Season progression), [`app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt`](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt) (App navigation), [`app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt`](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt) (Match simulation), [`app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt`](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt) (Game coordinator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["App and presentation"]
  node_app["App navigation"]
  node_career_ui["Career screens<br/>[NewCareerScreen.kt]"]
  node_match_ui["Match screens<br/>[MatchDayScreen.kt]"]
  node_club_ui["Club screens<br/>[SquadScreen.kt]"]
end

subgraph group_career["Career and persistence"]
  node_viewmodel["Game coordinator<br/>[GameViewModel.kt]"]
  node_career_state["Career state<br/>[Career.kt]"]
  node_save["Save repository<br/>[SaveRepository.kt]"]
  node_calendar["Season calendar<br/>[SeasonCalendar.kt]"]
end

subgraph group_simulation["Football simulation"]
  node_season["Season progression<br/>[SeasonEngine.kt]"]
  node_match["Match simulation<br/>[MatchEngine.kt]"]
  node_live_match["Live match"]
  node_europe["European competitions"]
  node_team_strength["Team strength<br/>[TeamStrength.kt]"]
end

subgraph group_club["Club management"]
  node_club_data[("Club database<br/>[ClubDatabase.kt]")]
  node_transfers["Transfers<br/>[TransferEngine.kt]"]
  node_negotiations["Negotiations"]
  node_finance["Club finances<br/>[FinanceEngine.kt]"]
  node_ai["Club AI<br/>[AiManager.kt]"]
  node_tactics["Tactics and formations<br/>[Tactics.kt]"]
  node_player["Player model<br/>[Player.kt]"]
end

node_manager(("Manager"))

node_manager -->|"uses"| node_app
node_app -->|"coordinates"| node_viewmodel
node_app -->|"routes to"| node_career_ui
node_app -->|"routes to"| node_match_ui
node_app -->|"routes to"| node_club_ui
node_app -->|"starts career"| node_viewmodel
node_viewmodel -.->|"manages"| node_career_state
node_viewmodel -.->|"advances"| node_season
node_viewmodel -.->|"persists"| node_save
node_save -->|"loads and saves"| node_career_state
node_season -->|"consults"| node_calendar
node_season -->|"simulates"| node_match
node_season -->|"runs"| node_ai
node_season -->|"updates"| node_europe
node_season -->|"updates"| node_finance
node_season -->|"runs"| node_transfers
node_live_match -->|"uses"| node_match
node_match -->|"uses"| node_team_strength
node_match -->|"uses"| node_europe
node_match -->|"reads"| node_tactics
node_match -->|"simulates with"| node_player
node_club_data -->|"provides clubs"| node_career_state
node_negotiations -->|"delegates to"| node_transfers
node_transfers -->|"uses"| node_ai
node_transfers -->|"uses"| node_finance
node_season -.->|"updates"| node_career_state

click node_app "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt"
click node_career_ui "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/screens/NewCareerScreen.kt"
click node_match_ui "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/screens/MatchDayScreen.kt"
click node_club_ui "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/screens/SquadScreen.kt"
click node_viewmodel "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt"
click node_career_state "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/model/Career.kt"
click node_save "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/data/SaveRepository.kt"
click node_calendar "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/data/SeasonCalendar.kt"
click node_season "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt"
click node_match "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt"
click node_live_match "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/ProgressiveMatchEngine.kt"
click node_europe "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/ChampionsLeagueEngine.kt"
click node_club_data "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/data/ClubDatabase.kt"
click node_transfers "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/TransferEngine.kt"
click node_negotiations "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/NegotiationEngine.kt"
click node_finance "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/FinanceEngine.kt"
click node_ai "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/AiManager.kt"
click node_team_strength "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/TeamStrength.kt"
click node_tactics "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/model/Tactics.kt"
click node_player "https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/model/Player.kt"

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_career_ui,node_match_ui,node_club_ui toneBlue
class node_viewmodel,node_career_state,node_save,node_calendar toneAmber
class node_season,node_match,node_live_match,node_europe,node_team_strength toneMint
class node_club_data,node_transfers,node_negotiations,node_finance,node_ai,node_tactics,node_player toneRose
class node_manager toneIndigo
```

## Components

### App and presentation

- [App navigation](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt): `app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt`
- [Career screens](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/screens/NewCareerScreen.kt): `app/src/main/java/com/footymanager/simulator/ui/screens/NewCareerScreen.kt`
- [Match screens](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/screens/MatchDayScreen.kt): `app/src/main/java/com/footymanager/simulator/ui/screens/MatchDayScreen.kt`
- [Club screens](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/ui/screens/SquadScreen.kt): `app/src/main/java/com/footymanager/simulator/ui/screens/SquadScreen.kt`

### Career and persistence

- [Game coordinator](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt): `app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt`
- [Career state](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/model/Career.kt): `app/src/main/java/com/footymanager/simulator/domain/model/Career.kt`
- [Save repository](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/data/SaveRepository.kt): `app/src/main/java/com/footymanager/simulator/domain/data/SaveRepository.kt`
- [Season calendar](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/data/SeasonCalendar.kt): `app/src/main/java/com/footymanager/simulator/domain/data/SeasonCalendar.kt`

### Football simulation

- [Season progression](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`
- [Match simulation](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt`
- [Live match](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/ProgressiveMatchEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/ProgressiveMatchEngine.kt`
- [European competitions](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/ChampionsLeagueEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/ChampionsLeagueEngine.kt`
- [Team strength](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/TeamStrength.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/TeamStrength.kt`

### Club management

- [Club database](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/data/ClubDatabase.kt): `app/src/main/java/com/footymanager/simulator/domain/data/ClubDatabase.kt`
- [Transfers](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/TransferEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/TransferEngine.kt`
- [Negotiations](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/NegotiationEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/NegotiationEngine.kt`
- [Club finances](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/FinanceEngine.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/FinanceEngine.kt`
- [Club AI](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/engine/AiManager.kt): `app/src/main/java/com/footymanager/simulator/domain/engine/AiManager.kt`
- [Tactics and formations](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/model/Tactics.kt): `app/src/main/java/com/footymanager/simulator/domain/model/Tactics.kt`
- [Player model](https://github.com/whocares218/fm-27/blob/main/app/src/main/java/com/footymanager/simulator/domain/model/Player.kt): `app/src/main/java/com/footymanager/simulator/domain/model/Player.kt`

### Other components

- **Manager**

## Connections

- Manager → App navigation: uses
- App navigation → Game coordinator: coordinates (evidence: `app/src/main/java/com/footymanager/simulator/MainActivity.kt`)
- App navigation → Career screens: routes to (evidence: `app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt`)
- App navigation → Match screens: routes to (evidence: `app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt`)
- App navigation → Club screens: routes to (evidence: `app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt`)
- App navigation → Game coordinator: starts career (evidence: `app/src/main/java/com/footymanager/simulator/ui/FootballManagerApp.kt`)
- Game coordinator → Career state: manages (evidence: `app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt`)
- Game coordinator → Season progression: advances (evidence: `app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt`)
- Game coordinator → Save repository: persists (evidence: `app/src/main/java/com/footymanager/simulator/viewmodel/GameViewModel.kt`)
- Save repository → Career state: loads and saves (evidence: `app/src/main/java/com/footymanager/simulator/domain/data/SaveRepository.kt`)
- Season progression → Season calendar: consults (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
- Season progression → Match simulation: simulates (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
- Season progression → Club AI: runs (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
- Season progression → European competitions: updates (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
- Season progression → Club finances: updates (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
- Season progression → Transfers: runs (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
- Live match → Match simulation: uses (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/ProgressiveMatchEngine.kt`)
- Match simulation → Team strength: uses (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt`)
- Match simulation → European competitions: uses (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt`)
- Match simulation → Tactics and formations: reads (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt`)
- Match simulation → Player model: simulates with (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/MatchEngine.kt`)
- Club database → Career state: provides clubs (evidence: `app/src/main/java/com/footymanager/simulator/domain/data/ClubDatabase.kt`)
- Negotiations → Transfers: delegates to (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/NegotiationEngine.kt`)
- Transfers → Club AI: uses (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/TransferEngine.kt`)
- Transfers → Club finances: uses (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/TransferEngine.kt`)
- Season progression → Career state: updates (evidence: `app/src/main/java/com/footymanager/simulator/domain/engine/SeasonEngine.kt`)
