# nacoliu/opensteameya architecture

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

- Interactive diagram: https://gitdiagram.com/nacoliu/opensteameya
- Repository: https://github.com/nacoliu/opensteameya

## Overview

SteamEYA is a Windows desktop tool for signing into Steam with EYA tokens and managing associated accounts and CS2 features. The main workflow starts at the login page: resolve manual credentials or a license key, validate the token, then prepare and launch the local Steam client; account history and CS2 status are updated alongside related actions. Other documented branches cover loadout presets, profile personalization, workshop cleanup, cloud settings, localization, and updates. The tree and sampled excerpts support the page-to-service links shown; unsampled subsystem internals are represented at their exact service paths, with uncertain wiring omitted.

Main entry points: [`SteamEyaWinUI/Pages/LoginPage.xaml.cs`](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/LoginPage.xaml.cs) (Login Page), [`SteamEyaWinUI/Services/AppState.cs`](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/AppState.cs) (App State), [`SteamEyaWinUI/Pages/HistoryPage.xaml.cs`](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/HistoryPage.xaml.cs) (History Page), [`SteamEyaWinUI/Services/AccountHistoryService.cs`](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/AccountHistoryService.cs) (Account History)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_login["Login Page<br/>[LoginPage.xaml.cs]"]
  node_historyui["History Page"]
  node_loadoutui["Loadout Page"]
  node_settingsui["Settings Page"]
  node_personalui["Personalization Page"]
end

subgraph group_steam["Steam Login"]
  node_jwt["JWT Tokens<br/>[JwtTokenService.cs]"]
  node_license["License Lookup"]
  node_loginservice["Steam Login"]
  node_paths["Steam Paths"]
  node_steamproc["Steam Process"]
  node_steamclient["Steam Client<br/>[SteamCmClient.cs]"]
end

subgraph group_accounts["Account Management"]
  node_history[("Account History")]
  node_cached[("Login Cache")]
  node_profile["Profile Service"]
  node_historymodel["History Records"]
end

subgraph group_cs2["CS2 Features"]
  node_premier["Premier Status"]
  node_loadout["Loadout Service"]
  node_cloud["Cloud Settings<br/>[Cs2CloudService.cs]"]
  node_pushworker["Cloud Push Worker"]
  node_gc["GC Session<br/>[CsGcSession.cs]"]
  node_workshop["Workshop Cleanup"]
end

subgraph group_app["App Services"]
  node_appstate["App State<br/>[AppState.cs]"]
  node_settings[("Settings Storage<br/>[SettingsService.cs]")]
  node_localization["Localization<br/>[Loc.cs]"]
  node_updates["Update Service"]
  node_installer["Update Installer"]
end

node_user(("User"))
node_steam(("Steam Client"))
node_github(("GitHub Releases"))

node_user -->|"enter credentials"| node_login
node_user -->|"manage accounts"| node_historyui
node_user -->|"edit presets"| node_loadoutui
node_user -->|"change settings"| node_settingsui
node_login -->|"access services"| node_appstate
node_historyui -->|"access services"| node_appstate
node_loadoutui -->|"access services"| node_appstate
node_personalui -->|"access services"| node_appstate
node_settingsui -->|"access services"| node_appstate
node_appstate -->|"loads and saves"| node_settings
node_appstate -->|"provides service"| node_updates
node_login -->|"resolves license"| node_license
node_login -->|"validates token"| node_jwt
node_login -->|"resolves install"| node_paths
node_login -->|"requests login"| node_loginservice
node_loginservice -->|"stops or starts"| node_steamproc
node_loginservice -->|"authenticates via"| node_steamclient
node_steamclient -->|"connects"| node_steam
node_login -->|"records account"| node_history
node_historyui -->|"queries and edits"| node_history
node_history -->|"reads and writes"| node_historymodel
node_history -->|"refreshes profiles"| node_profile
node_cached -.->|"fetches profile"| node_steam
node_login -->|"queries status"| node_premier
node_historyui -->|"refreshes status"| node_premier
node_loadoutui -->|"equips preset"| node_loadout
node_loadout -->|"uses CM session"| node_steamclient
node_loadout -->|"sends GC messages"| node_gc
node_login -->|"pushes settings"| node_cloud
node_cloud -->|"launches helper"| node_pushworker
node_pushworker -->|"updates cloud files"| node_steam
node_login -->|"cleans subscriptions"| node_workshop
node_settingsui -->|"selects language"| node_localization
node_localization -->|"persists choice"| node_settings
node_updates -->|"checks releases"| node_github
node_updates -->|"downloads update"| node_installer

click node_login "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/LoginPage.xaml.cs"
click node_historyui "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/HistoryPage.xaml.cs"
click node_loadoutui "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/LoadoutPage.xaml.cs"
click node_settingsui "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/SettingsPage.xaml.cs"
click node_personalui "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/PersonalizationPage.xaml.cs"
click node_appstate "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/AppState.cs"
click node_jwt "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/JwtTokenService.cs"
click node_license "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamLicenseClient.cs"
click node_loginservice "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamLoginService.cs"
click node_paths "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamPathCoordinator.cs"
click node_steamproc "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamProcessService.cs"
click node_steamclient "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamCmClient.cs"
click node_history "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/AccountHistoryService.cs"
click node_cached "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamLoginCacheService.cs"
click node_profile "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamProfileService.cs"
click node_historymodel "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Models/SteamAccountHistoryItem.cs"
click node_premier "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/CsPremierScoreService.cs"
click node_loadout "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/CsLoadoutService.cs"
click node_cloud "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/Cs2CloudService.cs"
click node_pushworker "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/Cs2CloudPushWorker.cs"
click node_gc "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/CsGcSession.cs"
click node_workshop "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamWorkshopService.cs"
click node_settings "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SettingsService.cs"
click node_localization "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Localization/Loc.cs"
click node_updates "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/GitHubUpdateService.cs"
click node_installer "https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/UpdateInstallerService.cs"

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_login,node_historyui,node_loadoutui,node_settingsui,node_personalui,node_user,node_steam toneBlue
class node_jwt,node_license,node_loginservice,node_paths,node_steamproc,node_steamclient toneAmber
class node_history,node_cached,node_profile,node_historymodel toneMint
class node_premier,node_loadout,node_cloud,node_pushworker,node_gc,node_workshop toneRose
class node_appstate,node_settings,node_localization,node_updates,node_installer,node_github toneIndigo
```

## Components

### Desktop UI

- [Login Page](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/LoginPage.xaml.cs): `SteamEyaWinUI/Pages/LoginPage.xaml.cs`
- [History Page](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/HistoryPage.xaml.cs): `SteamEyaWinUI/Pages/HistoryPage.xaml.cs`
- [Loadout Page](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/LoadoutPage.xaml.cs): `SteamEyaWinUI/Pages/LoadoutPage.xaml.cs`
- [Settings Page](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/SettingsPage.xaml.cs): `SteamEyaWinUI/Pages/SettingsPage.xaml.cs`
- [Personalization Page](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Pages/PersonalizationPage.xaml.cs): `SteamEyaWinUI/Pages/PersonalizationPage.xaml.cs`

### Steam Login

- [JWT Tokens](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/JwtTokenService.cs): `SteamEyaWinUI/Services/JwtTokenService.cs`
- [License Lookup](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamLicenseClient.cs): `SteamEyaWinUI/Services/SteamLicenseClient.cs`
- [Steam Login](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamLoginService.cs): `SteamEyaWinUI/Services/SteamLoginService.cs`
- [Steam Paths](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamPathCoordinator.cs): `SteamEyaWinUI/Services/SteamPathCoordinator.cs`
- [Steam Process](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamProcessService.cs): `SteamEyaWinUI/Services/SteamProcessService.cs`
- [Steam Client](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamCmClient.cs): `SteamEyaWinUI/Services/SteamCmClient.cs`

### Account Management

- [Account History](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/AccountHistoryService.cs): `SteamEyaWinUI/Services/AccountHistoryService.cs`
- [Login Cache](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamLoginCacheService.cs): `SteamEyaWinUI/Services/SteamLoginCacheService.cs`
- [Profile Service](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamProfileService.cs): `SteamEyaWinUI/Services/SteamProfileService.cs`
- [History Records](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Models/SteamAccountHistoryItem.cs): `SteamEyaWinUI/Models/SteamAccountHistoryItem.cs`

### CS2 Features

- [Premier Status](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/CsPremierScoreService.cs): `SteamEyaWinUI/Services/CsPremierScoreService.cs`
- [Loadout Service](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/CsLoadoutService.cs): `SteamEyaWinUI/Services/CsLoadoutService.cs`
- [Cloud Settings](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/Cs2CloudService.cs): `SteamEyaWinUI/Services/Cs2CloudService.cs`
- [Cloud Push Worker](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/Cs2CloudPushWorker.cs): `SteamEyaWinUI/Services/Cs2CloudPushWorker.cs`
- [GC Session](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/CsGcSession.cs): `SteamEyaWinUI/Services/CsGcSession.cs`
- [Workshop Cleanup](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SteamWorkshopService.cs): `SteamEyaWinUI/Services/SteamWorkshopService.cs`

### App Services

- [App State](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/AppState.cs): `SteamEyaWinUI/Services/AppState.cs`
- [Settings Storage](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/SettingsService.cs): `SteamEyaWinUI/Services/SettingsService.cs`
- [Localization](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Localization/Loc.cs): `SteamEyaWinUI/Localization/Loc.cs`
- [Update Service](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/GitHubUpdateService.cs): `SteamEyaWinUI/Services/GitHubUpdateService.cs`
- [Update Installer](https://github.com/nacoliu/opensteameya/blob/main/SteamEyaWinUI/Services/UpdateInstallerService.cs): `SteamEyaWinUI/Services/UpdateInstallerService.cs`

### Other components

- **User**
- **Steam Client**
- **GitHub Releases**

## Connections

- User → Login Page: enter credentials
- User → History Page: manage accounts
- User → Loadout Page: edit presets
- User → Settings Page: change settings
- Login Page → App State: access services
- History Page → App State: access services
- Loadout Page → App State: access services
- Personalization Page → App State: access services
- Settings Page → App State: access services
- App State → Settings Storage: loads and saves
- App State → Update Service: provides service
- Login Page → License Lookup: resolves license
- Login Page → JWT Tokens: validates token
- Login Page → Steam Paths: resolves install
- Login Page → Steam Login: requests login
- Steam Login → Steam Process: stops or starts
- Steam Login → Steam Client: authenticates via
- Steam Client → Steam Client: connects
- Login Page → Account History: records account
- History Page → Account History: queries and edits
- Account History → History Records: reads and writes
- Account History → Profile Service: refreshes profiles
- Login Cache → Steam Client: fetches profile
- Login Page → Premier Status: queries status
- History Page → Premier Status: refreshes status
- Loadout Page → Loadout Service: equips preset
- Loadout Service → Steam Client: uses CM session
- Loadout Service → GC Session: sends GC messages
- Login Page → Cloud Settings: pushes settings
- Cloud Settings → Cloud Push Worker: launches helper
- Cloud Push Worker → Steam Client: updates cloud files
- Login Page → Workshop Cleanup: cleans subscriptions
- Settings Page → Localization: selects language
- Localization → Settings Storage: persists choice
- Update Service → GitHub Releases: checks releases
- Update Service → Update Installer: downloads update
