# mohamedyassine-benmiled/orbshacker_dotnet architecture

> Architecture diagram of the GitHub repository mohamedyassine-benmiled/orbshacker_dotnet, 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/mohamedyassine-benmiled/orbshacker_dotnet
- Repository: https://github.com/mohamedyassine-benmiled/orbshacker_dotnet

## Overview

Orbshacker is a Windows tool that helps users create and run a process with a chosen game’s executable name, then keeps that process detectable with a graphical countdown timer. The main flow loads Discord’s detectable-game catalog, lets the user search it or enter a name manually, and copies and launches the application under that name. A separate Steam quest flow finds Steam game metadata and creates a partial-download manifest. The map also includes configuration, cleanup, and release updating; unsampled implementation details are represented only where the README documents them.

Main entry points: [`src/Orbshacker/Program.cs`](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Program.cs) (Application entry), [`src/Orbshacker/ApiClient.cs`](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/ApiClient.cs) (HTTP client), [`src/Orbshacker/SteamService.cs`](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/SteamService.cs) (Steam service), [`src/Orbshacker/TimerForm.cs`](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/TimerForm.cs) (Countdown timer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application workflow"]
  node_program["Application entry<br/>[Program.cs]"]
  node_ui["Console UI<br/>[Ui.cs]"]
  node_faker["Executable creator<br/>[GameFaker.cs]"]
end

subgraph group_catalog["Game catalog"]
  node_database["Game catalog"]
  node_api["HTTP client<br/>[ApiClient.cs]"]
end

subgraph group_steam["Steam quest"]
  node_steam["Steam service<br/>[SteamService.cs]"]
end

subgraph group_runtime["Runtime and settings"]
  node_config["Settings and migration<br/>[AppConfig.cs]"]
  node_timer["Countdown timer<br/>[TimerForm.cs]"]
end

subgraph group_updates["Release updates"]
  node_updater["Release updater<br/>[Updater.cs]"]
end

node_user(("User"))
node_discord["Discord API"]
node_backup["GitHub archive"]
node_filesystem["Windows files"]
node_processes["Windows processes"]
node_steamstore["Steam Store"]
node_steamcmd["Steam metadata API"]
node_registry["Windows registry"]
node_github["GitHub Releases"]

node_user -->|"chooses mode"| node_program
node_program -->|"shows prompts"| node_ui
node_ui -->|"reads choices"| node_user
node_program -->|"loads settings"| node_config
node_program -->|"checks release"| node_updater
node_program -->|"loads catalog"| node_database
node_database -->|"requests catalog"| node_api
node_api -->|"fetches catalog"| node_discord
node_api -->|"fetches fallback"| node_backup
node_program -->|"searches games"| node_database
node_program -->|"creates executable"| node_faker
node_program -->|"runs Steam mode"| node_steam
node_steam -->|"requests metadata"| node_api
node_api -->|"searches games"| node_steamstore
node_api -->|"fetches app info"| node_steamcmd
node_steam -->|"reads Steam details"| node_registry
node_steam -->|"writes manifest"| node_filesystem
node_program -->|"generates manifest"| node_steam
node_program -->|"copies and launches"| node_faker
node_faker -->|"copies and cleans files"| node_filesystem
node_faker -->|"launches and cleans"| node_processes
node_config -->|"reads and writes settings"| node_filesystem
node_program -->|"runs copied app"| node_timer
node_timer -->|"reads timer settings"| node_config
node_timer -->|"deletes app and manifest"| node_filesystem
node_timer -->|"starts cleanup command"| node_processes
node_updater -->|"checks and downloads"| node_api
node_api -->|"fetches release assets"| node_github
node_updater -->|"replaces executable"| node_filesystem
node_updater -->|"restarts application"| node_processes

click node_program "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Program.cs"
click node_ui "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Ui.cs"
click node_database "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/DiscordGamesDatabase.cs"
click node_api "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/ApiClient.cs"
click node_faker "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/GameFaker.cs"
click node_steam "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/SteamService.cs"
click node_config "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/AppConfig.cs"
click node_timer "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/TimerForm.cs"
click node_updater "https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Updater.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_program,node_ui,node_faker,node_user toneBlue
class node_database,node_api toneAmber
class node_steam,node_discord,node_steamcmd toneMint
class node_config,node_timer toneRose
class node_updater,node_backup,node_filesystem,node_processes,node_steamstore,node_registry,node_github toneIndigo
```

## Components

### Application workflow

- [Application entry](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Program.cs): `src/Orbshacker/Program.cs`
- [Console UI](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Ui.cs): `src/Orbshacker/Ui.cs`
- [Executable creator](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/GameFaker.cs): `src/Orbshacker/GameFaker.cs`

### Game catalog

- [Game catalog](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/DiscordGamesDatabase.cs): `src/Orbshacker/DiscordGamesDatabase.cs`
- [HTTP client](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/ApiClient.cs): `src/Orbshacker/ApiClient.cs`

### Steam quest

- [Steam service](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/SteamService.cs): `src/Orbshacker/SteamService.cs`

### Runtime and settings

- [Settings and migration](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/AppConfig.cs): `src/Orbshacker/AppConfig.cs`
- [Countdown timer](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/TimerForm.cs): `src/Orbshacker/TimerForm.cs`

### Release updates

- [Release updater](https://github.com/mohamedyassine-benmiled/orbshacker_dotnet/blob/main/src/Orbshacker/Updater.cs): `src/Orbshacker/Updater.cs`

### Other components

- **User**
- **Discord API**
- **GitHub archive**
- **Windows files**
- **Windows processes**
- **Steam Store**
- **Steam metadata API**
- **Windows registry**
- **GitHub Releases**

## Connections

- User → Application entry: chooses mode
- Application entry → Console UI: shows prompts
- Console UI → User: reads choices
- Application entry → Settings and migration: loads settings
- Application entry → Release updater: checks release
- Application entry → Game catalog: loads catalog
- Game catalog → HTTP client: requests catalog
- HTTP client → Discord API: fetches catalog
- HTTP client → GitHub archive: fetches fallback
- Application entry → Game catalog: searches games
- Application entry → Executable creator: creates executable
- Application entry → Steam service: runs Steam mode
- Steam service → HTTP client: requests metadata
- HTTP client → Steam Store: searches games
- HTTP client → Steam metadata API: fetches app info
- Steam service → Windows registry: reads Steam details
- Steam service → Windows files: writes manifest
- Application entry → Steam service: generates manifest
- Application entry → Executable creator: copies and launches
- Executable creator → Windows files: copies and cleans files
- Executable creator → Windows processes: launches and cleans
- Settings and migration → Windows files: reads and writes settings
- Application entry → Countdown timer: runs copied app
- Countdown timer → Settings and migration: reads timer settings
- Countdown timer → Windows files: deletes app and manifest
- Countdown timer → Windows processes: starts cleanup command
- Release updater → HTTP client: checks and downloads
- HTTP client → GitHub Releases: fetches release assets
- Release updater → Windows files: replaces executable
- Release updater → Windows processes: restarts application
