# bxn4/seego-launcher architecture

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

- Interactive diagram: https://gitdiagram.com/bxn4/seego-launcher
- Repository: https://github.com/bxn4/seego-launcher

## Overview

SeeGO Launcher is a Go/Wails desktop launcher for SeeRPG, with a Svelte WebView interface. Its startup workflow loads and validates cached terms/news, fetches missing or updated content, then opens the terms gate or main interface. The main screen combines server queue/status and news; settings and localization provide additional user-facing capabilities. The sampled sources show app startup and cache/network behavior, but not all service implementations or view-to-backend wiring; uncertain connections are omitted.

Main entry points: [`frontend/src/App.svelte`](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/App.svelte) (Svelte shell), [`frontend/bindings/seegolauncher/internal/services/index.js`](https://github.com/bxn4/seego-launcher/blob/main/frontend/bindings/seegolauncher/internal/services/index.js) (Wails service bindings), [`internal/app.go`](https://github.com/bxn4/seego-launcher/blob/main/internal/app.go) (Wails app), [`frontend/src/views/Main.svelte`](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Main.svelte) (Main views)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop runtime"]
  node_main["Program entry<br/>[main.go]"]
  node_app["Wails app<br/>[app.go]"]
  node_config["Configuration<br/>[config.go]"]
  node_bindings["Wails service bindings<br/>[index.js]"]
end

subgraph group_content["Terms and news"]
  node_newsmanager["News manager<br/>[news.ts]"]
  node_cache["Content cache service<br/>[cache.go]"]
  node_cachefiles[("Local content cache<br/>[paths.go]")]
  node_request["HTTP requests<br/>[request.go]"]
  node_remotecontent{{"SeeRPG content services<br/>[endpoints.go]"}}
end

subgraph group_server["Server status"]
  node_servermanager["Status manager<br/>[server.ts]"]
  node_api["Backend API service<br/>[api.go]"]
  node_serverremote{{"SeeRPG status<br/>[endpoints.go]"}}
end

subgraph group_interface["Launcher interface"]
  node_frontend["Svelte shell<br/>[App.svelte]"]
  node_mainview["Main views<br/>[Main.svelte]"]
  node_home["Home screen<br/>[Home.svelte]"]
  node_newsview["News screen<br/>[News.svelte]"]
  node_settings["Settings screen<br/>[Settings.svelte]"]
  node_termsview["Terms screen<br/>[Terms.svelte]"]
  node_splash["Loading screen<br/>[Splash.svelte]"]
  node_localization["Localization manager<br/>[localization.ts]"]
end

node_user(("Launcher user"))

node_user -->|"starts"| node_main
node_main -->|"creates and runs"| node_app
node_app -->|"loads cache"| node_cache
node_cache -->|"fetches content"| node_request
node_request -->|"requests terms/news"| node_remotecontent
node_cache -->|"reads/writes"| node_cachefiles
node_app -->|"emits navigation"| node_frontend
node_frontend -->|"renders"| node_splash
node_frontend -->|"renders"| node_termsview
node_frontend -->|"renders"| node_mainview
node_mainview -->|"renders"| node_home
node_mainview -->|"renders"| node_newsview
node_mainview -->|"renders"| node_settings
node_app -->|"reads settings"| node_config
node_frontend -->|"gets/sets settings"| node_config
node_app -->|"registers services"| node_bindings
node_frontend -->|"calls services"| node_bindings
node_bindings -->|"invokes"| node_api
node_api -->|"queries status"| node_serverremote
node_frontend -->|"initializes"| node_servermanager
node_servermanager -->|"gets player status"| node_bindings
node_home -->|"displays status"| node_servermanager
node_frontend -->|"initializes"| node_newsmanager
node_newsview -->|"displays news"| node_newsmanager
node_newsmanager -->|"gets cached news"| node_bindings
node_bindings -->|"invokes cache service"| node_cache
node_frontend -->|"initializes"| node_localization

click node_main "https://github.com/bxn4/seego-launcher/blob/main/main.go"
click node_app "https://github.com/bxn4/seego-launcher/blob/main/internal/app.go"
click node_frontend "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/App.svelte"
click node_mainview "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Main.svelte"
click node_home "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/view/Home.svelte"
click node_newsview "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/view/News.svelte"
click node_settings "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/view/Settings.svelte"
click node_termsview "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Terms.svelte"
click node_splash "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Splash.svelte"
click node_servermanager "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/managers/server.ts"
click node_newsmanager "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/managers/news.ts"
click node_localization "https://github.com/bxn4/seego-launcher/blob/main/frontend/src/managers/localization.ts"
click node_config "https://github.com/bxn4/seego-launcher/blob/main/internal/services/config.go"
click node_cache "https://github.com/bxn4/seego-launcher/blob/main/internal/services/cache.go"
click node_cachefiles "https://github.com/bxn4/seego-launcher/blob/main/internal/paths/paths.go"
click node_request "https://github.com/bxn4/seego-launcher/blob/main/internal/net/request.go"
click node_api "https://github.com/bxn4/seego-launcher/blob/main/internal/services/api.go"
click node_serverremote "https://github.com/bxn4/seego-launcher/blob/main/internal/endpoints/endpoints.go"
click node_remotecontent "https://github.com/bxn4/seego-launcher/blob/main/internal/endpoints/endpoints.go"
click node_bindings "https://github.com/bxn4/seego-launcher/blob/main/frontend/bindings/seegolauncher/internal/services/index.js"

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_main,node_app,node_config,node_bindings,node_user toneBlue
class node_newsmanager,node_cache,node_cachefiles,node_request,node_remotecontent toneAmber
class node_servermanager,node_api,node_serverremote toneMint
class node_frontend,node_mainview,node_home,node_newsview,node_settings,node_termsview,node_splash,node_localization toneRose
```

## Components

### Desktop runtime

- [Program entry](https://github.com/bxn4/seego-launcher/blob/main/main.go): `main.go`
- [Wails app](https://github.com/bxn4/seego-launcher/blob/main/internal/app.go): `internal/app.go`
- [Configuration](https://github.com/bxn4/seego-launcher/blob/main/internal/services/config.go): `internal/services/config.go`
- [Wails service bindings](https://github.com/bxn4/seego-launcher/blob/main/frontend/bindings/seegolauncher/internal/services/index.js): `frontend/bindings/seegolauncher/internal/services/index.js`

### Terms and news

- [News manager](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/managers/news.ts): `frontend/src/managers/news.ts`
- [Content cache service](https://github.com/bxn4/seego-launcher/blob/main/internal/services/cache.go): `internal/services/cache.go`
- [Local content cache](https://github.com/bxn4/seego-launcher/blob/main/internal/paths/paths.go): `internal/paths/paths.go`
- [HTTP requests](https://github.com/bxn4/seego-launcher/blob/main/internal/net/request.go): `internal/net/request.go`
- [SeeRPG content services](https://github.com/bxn4/seego-launcher/blob/main/internal/endpoints/endpoints.go): `internal/endpoints/endpoints.go`

### Server status

- [Status manager](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/managers/server.ts): `frontend/src/managers/server.ts`
- [Backend API service](https://github.com/bxn4/seego-launcher/blob/main/internal/services/api.go): `internal/services/api.go`
- [SeeRPG status](https://github.com/bxn4/seego-launcher/blob/main/internal/endpoints/endpoints.go): `internal/endpoints/endpoints.go`

### Launcher interface

- [Svelte shell](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/App.svelte): `frontend/src/App.svelte`
- [Main views](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Main.svelte): `frontend/src/views/Main.svelte`
- [Home screen](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/view/Home.svelte): `frontend/src/views/view/Home.svelte`
- [News screen](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/view/News.svelte): `frontend/src/views/view/News.svelte`
- [Settings screen](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/view/Settings.svelte): `frontend/src/views/view/Settings.svelte`
- [Terms screen](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Terms.svelte): `frontend/src/views/Terms.svelte`
- [Loading screen](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/views/Splash.svelte): `frontend/src/views/Splash.svelte`
- [Localization manager](https://github.com/bxn4/seego-launcher/blob/main/frontend/src/managers/localization.ts): `frontend/src/managers/localization.ts`

### Other components

- **Launcher user**

## Connections

- Launcher user → Program entry: starts
- Program entry → Wails app: creates and runs
- Wails app → Content cache service: loads cache
- Content cache service → HTTP requests: fetches content
- HTTP requests → SeeRPG content services: requests terms/news
- Content cache service → Local content cache: reads/writes
- Wails app → Svelte shell: emits navigation
- Svelte shell → Loading screen: renders
- Svelte shell → Terms screen: renders
- Svelte shell → Main views: renders
- Main views → Home screen: renders
- Main views → News screen: renders
- Main views → Settings screen: renders
- Wails app → Configuration: reads settings
- Svelte shell → Configuration: gets/sets settings
- Wails app → Wails service bindings: registers services
- Svelte shell → Wails service bindings: calls services
- Wails service bindings → Backend API service: invokes
- Backend API service → SeeRPG status: queries status
- Svelte shell → Status manager: initializes
- Status manager → Wails service bindings: gets player status
- Home screen → Status manager: displays status
- Svelte shell → News manager: initializes
- News screen → News manager: displays news
- News manager → Wails service bindings: gets cached news
- Wails service bindings → Content cache service: invokes cache service
- Svelte shell → Localization manager: initializes
