# tiouoo/portal architecture

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

- Interactive diagram: https://gitdiagram.com/tiouoo/portal
- Repository: https://github.com/tiouoo/portal

## Overview

Portal is a cross-platform Minecraft launcher and instance manager for Java and Bedrock. Its main workflow is to configure accounts and game folders, discover or install an instance, manage its resources and files, then launch it; Bedrock launch and installation use platform-specific support. The graph also preserves documented capabilities for modpacks, worlds, multiplayer, Litematica previews, and command-line/protocol invocation. Relationships are limited to README statements and source-index references; unsampled implementation details are not inferred.

Main entry points: [`src/Portal/App.axaml.cs`](https://github.com/tiouoo/portal/blob/main/src/Portal/App.axaml.cs) (Launcher UI), [`src/Portal.Core/Minecraft/Instance/InstanceManager.cs`](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/InstanceManager.cs) (Instance Discovery), [`src/Portal.Desktop/PortalCommandService.cs`](https://github.com/tiouoo/portal/blob/main/src/Portal.Desktop/PortalCommandService.cs) (CLI and Protocol), [`src/Portal.Core/Minecraft/MinecraftInstallationTasks.cs`](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/MinecraftInstallationTasks.cs) (Game Installation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_desktop["Desktop Application<br/>[Program.cs]"]
  node_ui["Launcher UI<br/>[App.axaml.cs]"]
  node_cli["CLI and Protocol"]
end

subgraph group_minecraft["Minecraft Management"]
  node_instances["Instance Discovery<br/>[InstanceManager.cs]"]
  node_instance_model["Instance Model"]
  node_java["Java Runtime Management"]
  node_accounts["Account Management"]
  node_install["Game Installation"]
  node_launch["Launch Service"]
  node_resources["Resource Management"]
  node_files["Game File Management"]
end

subgraph group_bedrock["Bedrock Platform"]
  node_bedrock_data["Bedrock Data Paths"]
  node_bedrock_services["Bedrock Game Services"]
  node_bedrock_auth["Bedrock Authentication<br/>[XboxAuthClient.cs]"]
  node_bedrock_platform["Platform Install and Launch"]
end

subgraph group_extensions["Game Extensions"]
  node_modpacks["Modpack Services"]
  node_multiplayer["Multiplayer Services"]
  node_litematica["Litematica Analysis<br/>[AnalysisService.cs]"]
end

subgraph group_support["Shared Services"]
  node_config["Settings<br/>[Config.cs]"]
  node_configsave["Settings Persistence<br/>[ConfigSaver.cs]"]
  node_events["Application Events<br/>[Events.cs]"]
  node_localization["Localization"]
end

node_user(("Player"))
node_external(("Game and Content Providers"))

node_user -->|"starts"| node_desktop
node_desktop -->|"opens"| node_ui
node_user -->|"invokes"| node_cli
node_cli -.->|"requests launch"| node_launch
node_cli -.->|"requests install"| node_install
node_ui -.->|"configures"| node_config
node_config -->|"saves through"| node_configsave
node_configsave -->|"raises save"| node_events
node_ui -.->|"manages"| node_instances
node_instances -->|"creates"| node_instance_model
node_instances -->|"scans runtimes"| node_java
node_ui -.->|"manages"| node_accounts
node_ui -.->|"installs"| node_install
node_install -.->|"gets game data"| node_external
node_ui -.->|"launches"| node_launch
node_launch -.->|"starts game"| node_external
node_ui -.->|"manages resources"| node_resources
node_resources -->|"browses providers"| node_external
node_ui -.->|"organizes files"| node_files
node_instances -->|"uses data paths"| node_bedrock_data
node_ui -->|"imports packages"| node_bedrock_services
node_bedrock_services -->|"uses data paths"| node_bedrock_data
node_bedrock_auth -->|"authenticates with"| node_external
node_bedrock_platform -->|"installs and launches"| node_external
node_ui -.->|"manages modpacks"| node_modpacks
node_ui -.->|"supports multiplayer"| node_multiplayer
node_ui -.->|"previews structures"| node_litematica
node_ui -.->|"presents localized text"| node_localization

click node_desktop "https://github.com/tiouoo/portal/blob/main/src/Portal.Desktop/Program.cs"
click node_ui "https://github.com/tiouoo/portal/blob/main/src/Portal/App.axaml.cs"
click node_cli "https://github.com/tiouoo/portal/blob/main/src/Portal.Desktop/PortalCommandService.cs"
click node_config "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Module/Initialize/Config.cs"
click node_configsave "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Module/Initialize/ConfigSaver.cs"
click node_events "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/App/Events/Events.cs"
click node_localization "https://github.com/tiouoo/portal/blob/main/src/Portal.Localization/LocalizationService.cs"
click node_instances "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/InstanceManager.cs"
click node_instance_model "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Classes/MinecraftInstance.cs"
click node_java "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/Java/JavaRuntimeManager.cs"
click node_accounts "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Classes/MinecraftAccount.cs"
click node_install "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/MinecraftInstallationTasks.cs"
click node_launch "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/MinecraftLaunchService.cs"
click node_resources "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Services/ResourceUpdateService.cs"
click node_files "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Services/WorldSaveService.cs"
click node_bedrock_data "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/Bedrock/BedrockDataPathResolver.cs"
click node_bedrock_services "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Services/BedrockPackageImportService.cs"
click node_bedrock_auth "https://github.com/tiouoo/portal/blob/main/src/Portal.Bedrock.Xbox/XboxAuthClient.cs"
click node_bedrock_platform "https://github.com/tiouoo/portal/blob/main/src/Portal.Bedrock.Windows/BedrockInstaller.cs"
click node_modpacks "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Modpack/ModpackExportService.cs"
click node_multiplayer "https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Module/Multiplayer/HongshiMultiplayerService.cs"
click node_litematica "https://github.com/tiouoo/portal/blob/main/src/Portal.LitematicaViewer/Services/AnalysisService.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_desktop,node_ui,node_cli toneBlue
class node_instances,node_instance_model,node_java,node_accounts,node_install,node_launch,node_resources,node_files toneAmber
class node_bedrock_data,node_bedrock_services,node_bedrock_auth,node_bedrock_platform toneMint
class node_modpacks,node_multiplayer,node_litematica toneRose
class node_config,node_configsave,node_events,node_localization,node_user,node_external toneIndigo
```

## Components

### Application

- [Desktop Application](https://github.com/tiouoo/portal/blob/main/src/Portal.Desktop/Program.cs): `src/Portal.Desktop/Program.cs`
- [Launcher UI](https://github.com/tiouoo/portal/blob/main/src/Portal/App.axaml.cs): `src/Portal/App.axaml.cs`
- [CLI and Protocol](https://github.com/tiouoo/portal/blob/main/src/Portal.Desktop/PortalCommandService.cs): `src/Portal.Desktop/PortalCommandService.cs`

### Minecraft Management

- [Instance Discovery](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/InstanceManager.cs): `src/Portal.Core/Minecraft/Instance/InstanceManager.cs`
- [Instance Model](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Classes/MinecraftInstance.cs): `src/Portal.Core/Minecraft/Classes/MinecraftInstance.cs`
- [Java Runtime Management](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/Java/JavaRuntimeManager.cs): `src/Portal.Core/Minecraft/Instance/Java/JavaRuntimeManager.cs`
- [Account Management](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Classes/MinecraftAccount.cs): `src/Portal.Core/Minecraft/Classes/MinecraftAccount.cs`
- [Game Installation](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/MinecraftInstallationTasks.cs): `src/Portal.Core/Minecraft/MinecraftInstallationTasks.cs`
- [Launch Service](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/MinecraftLaunchService.cs): `src/Portal.Core/Minecraft/MinecraftLaunchService.cs`
- [Resource Management](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Services/ResourceUpdateService.cs): `src/Portal.Core/Minecraft/Services/ResourceUpdateService.cs`
- [Game File Management](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Services/WorldSaveService.cs): `src/Portal.Core/Minecraft/Services/WorldSaveService.cs`

### Bedrock Platform

- [Bedrock Data Paths](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Instance/Bedrock/BedrockDataPathResolver.cs): `src/Portal.Core/Minecraft/Instance/Bedrock/BedrockDataPathResolver.cs`
- [Bedrock Game Services](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Services/BedrockPackageImportService.cs): `src/Portal.Core/Minecraft/Services/BedrockPackageImportService.cs`
- [Bedrock Authentication](https://github.com/tiouoo/portal/blob/main/src/Portal.Bedrock.Xbox/XboxAuthClient.cs): `src/Portal.Bedrock.Xbox/XboxAuthClient.cs`
- [Platform Install and Launch](https://github.com/tiouoo/portal/blob/main/src/Portal.Bedrock.Windows/BedrockInstaller.cs): `src/Portal.Bedrock.Windows/BedrockInstaller.cs`

### Game Extensions

- [Modpack Services](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Minecraft/Modpack/ModpackExportService.cs): `src/Portal.Core/Minecraft/Modpack/ModpackExportService.cs`
- [Multiplayer Services](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Module/Multiplayer/HongshiMultiplayerService.cs): `src/Portal.Core/Module/Multiplayer/HongshiMultiplayerService.cs`
- [Litematica Analysis](https://github.com/tiouoo/portal/blob/main/src/Portal.LitematicaViewer/Services/AnalysisService.cs): `src/Portal.LitematicaViewer/Services/AnalysisService.cs`

### Shared Services

- [Settings](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Module/Initialize/Config.cs): `src/Portal.Core/Module/Initialize/Config.cs`
- [Settings Persistence](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/Module/Initialize/ConfigSaver.cs): `src/Portal.Core/Module/Initialize/ConfigSaver.cs`
- [Application Events](https://github.com/tiouoo/portal/blob/main/src/Portal.Core/App/Events/Events.cs): `src/Portal.Core/App/Events/Events.cs`
- [Localization](https://github.com/tiouoo/portal/blob/main/src/Portal.Localization/LocalizationService.cs): `src/Portal.Localization/LocalizationService.cs`

### Other components

- **Player**
- **Game and Content Providers**

## Connections

- Player → Desktop Application: starts (evidence: `README.md`)
- Desktop Application → Launcher UI: opens (evidence: `src/Portal.Desktop/Program.cs`)
- Player → CLI and Protocol: invokes (evidence: `README.md`)
- CLI and Protocol → Launch Service: requests launch
- CLI and Protocol → Game Installation: requests install
- Launcher UI → Settings: configures
- Settings → Settings Persistence: saves through (evidence: `src/Portal.Core/Classes/Config/ConfigEntry.cs`)
- Settings Persistence → Application Events: raises save (evidence: `src/Portal.Core/Module/Initialize/ConfigSaver.cs`)
- Launcher UI → Instance Discovery: manages
- Instance Discovery → Instance Model: creates (evidence: `src/Portal.Core/Minecraft/Instance/InstanceManager.cs`)
- Instance Discovery → Java Runtime Management: scans runtimes (evidence: `src/Portal.Core/Minecraft/Instance/InstanceManager.cs`)
- Launcher UI → Account Management: manages
- Launcher UI → Game Installation: installs
- Game Installation → Game and Content Providers: gets game data (evidence: `README.md`)
- Launcher UI → Launch Service: launches (evidence: `src/Portal/App.axaml.cs`)
- Launch Service → Game and Content Providers: starts game (evidence: `README.md`)
- Launcher UI → Resource Management: manages resources
- Resource Management → Game and Content Providers: browses providers (evidence: `README.md`)
- Launcher UI → Game File Management: organizes files
- Instance Discovery → Bedrock Data Paths: uses data paths (evidence: `src/Portal.Core/Minecraft/Instance/InstanceManager.cs`)
- Launcher UI → Bedrock Game Services: imports packages
- Bedrock Game Services → Bedrock Data Paths: uses data paths
- Bedrock Authentication → Game and Content Providers: authenticates with (evidence: `src/Portal.Bedrock.Xbox/XboxAuthClient.cs`)
- Platform Install and Launch → Game and Content Providers: installs and launches (evidence: `README.md`)
- Launcher UI → Modpack Services: manages modpacks
- Launcher UI → Multiplayer Services: supports multiplayer
- Launcher UI → Litematica Analysis: previews structures
- Launcher UI → Localization: presents localized text
