# goslynkllc/goslynk-booster architecture

> Architecture diagram of the GitHub repository goslynkllc/goslynk-booster, 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/goslynkllc/goslynk-booster
- Repository: https://github.com/goslynkllc/goslynk-booster
- Video tour (about a minute): https://gitdiagram.com/goslynkllc/goslynk-booster/video

## Overview

Goslynk Booster selectively tunnels game traffic through nearby UDP relays to reduce latency and packet loss. A player signs in, chooses a game and relay (or automatic selection), and presses Boost; the client loads the game’s regions, establishes relay roads, installs routes, and forwards matching packets through the tunnel. The backend also supplies account, relay, redemption, and admin capabilities. The README documents relay selection, multipath, profiles, and updates; sampled source confirms key UI, daemon, tunnel, relay, and API responsibilities, but not every Tauri command or relay-selection detail.

Main entry points: [`client-rs/gpb-app/src/App.jsx`](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/App.jsx) (App UI), [`client-rs/gpb-app/src-tauri/src/lib.rs`](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src-tauri/src/lib.rs) (Tauri commands), [`client-rs/crates/gpb-tunnel/src/lib.rs`](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-tunnel/src/lib.rs) (Tunnel engine), [`backend/server/src/app.js`](https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/app.js) (Accounts API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Player application"]
  node_ui["App UI<br/>[App.jsx]"]
  node_screens["Player screens<br/>[HomeScreen.jsx]"]
  node_admin["Admin screens<br/>[AdminScreen.jsx]"]
  node_api_client["API client<br/>[api.js]"]
  node_tauri["Tauri commands<br/>[lib.rs]"]
end

subgraph group_client["Client tunnel"]
  node_profile["Game profiles<br/>[lib.rs]"]
  node_daemon["Tunnel daemon<br/>[main.rs]"]
  node_tunnel["Tunnel engine<br/>[lib.rs]"]
  node_protocol["Wire protocol<br/>[lib.rs]"]
  node_network["TUN and routes<br/>[lib.rs]"]
end

subgraph group_service["Accounts service"]
  node_api_server["Accounts API<br/>[app.js]"]
  node_database[("Account database<br/>[db.js]")]
  node_api_runtime["API runtime<br/>[server.js]"]
  node_relay_admin["Relay registry<br/>[app.js]"]
end

subgraph group_relay["Relay data plane"]
  node_relay_main["Relay process<br/>[main.go]"]
  node_relay_server["UDP relay<br/>[server.go]"]
  node_tun["Relay TUN<br/>[tun_linux.go]"]
end

subgraph group_external["External systems"]
  node_game_server(("Game servers"))
  node_update_service["Update service"]
end

node_player(("Player"))

node_player -->|"uses"| node_ui
node_ui -->|"renders"| node_screens
node_ui -->|"requests"| node_api_client
node_ui -->|"controls"| node_tauri
node_ui -->|"opens admin"| node_admin
node_ui -.->|"checks updates"| node_update_service
node_api_client -->|"HTTP requests"| node_api_server
node_api_runtime -->|"hosts"| node_api_server
node_api_runtime -->|"migrates"| node_database
node_api_server -->|"queries and writes"| node_database
node_api_server -->|"administers relays"| node_relay_admin
node_relay_admin -->|"stores relay data"| node_database
node_tauri -->|"loads profiles"| node_profile
node_tauri -->|"configures routes"| node_network
node_tauri -->|"starts tunnel"| node_tunnel
node_daemon -->|"loads profile"| node_profile
node_daemon -->|"opens TUN and routes"| node_network
node_daemon -->|"starts pumps"| node_tunnel
node_tunnel -->|"encodes packets"| node_protocol
node_tunnel -->|"reads and writes"| node_network
node_relay_main -->|"starts server"| node_relay_server
node_relay_server -->|"processes packets"| node_protocol
node_relay_server -->|"forwards IP packets"| node_tun
node_tun -->|"routes game traffic"| node_game_server

click node_ui "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/App.jsx"
click node_screens "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/screens/HomeScreen.jsx"
click node_admin "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/screens/AdminScreen.jsx"
click node_api_client "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/api.js"
click node_tauri "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src-tauri/src/lib.rs"
click node_profile "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-profile/src/lib.rs"
click node_daemon "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-daemon/src/main.rs"
click node_tunnel "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-tunnel/src/lib.rs"
click node_protocol "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-protocol/src/lib.rs"
click node_network "https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-net/src/lib.rs"
click node_api_server "https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/app.js"
click node_database "https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/db.js"
click node_api_runtime "https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/server.js"
click node_relay_admin "https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/app.js"
click node_relay_main "https://github.com/goslynkllc/goslynk-booster/blob/main/relay/cmd/relayd/main.go"
click node_relay_server "https://github.com/goslynkllc/goslynk-booster/blob/main/relay/internal/server/server.go"
click node_tun "https://github.com/goslynkllc/goslynk-booster/blob/main/relay/internal/tun/tun_linux.go"

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_ui,node_screens,node_admin,node_api_client,node_tauri toneBlue
class node_profile,node_daemon,node_tunnel,node_protocol,node_network toneAmber
class node_api_server,node_database,node_api_runtime,node_relay_admin toneMint
class node_relay_main,node_relay_server,node_tun toneRose
class node_game_server,node_update_service,node_player toneIndigo
```

## Components

### Player application

- [App UI](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/App.jsx): `client-rs/gpb-app/src/App.jsx`
- [Player screens](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/screens/HomeScreen.jsx): `client-rs/gpb-app/src/screens/HomeScreen.jsx`
- [Admin screens](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/screens/AdminScreen.jsx): `client-rs/gpb-app/src/screens/AdminScreen.jsx`
- [API client](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src/api.js): `client-rs/gpb-app/src/api.js`
- [Tauri commands](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/gpb-app/src-tauri/src/lib.rs): `client-rs/gpb-app/src-tauri/src/lib.rs`

### Client tunnel

- [Game profiles](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-profile/src/lib.rs): `client-rs/crates/gpb-profile/src/lib.rs`
- [Tunnel daemon](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-daemon/src/main.rs): `client-rs/crates/gpb-daemon/src/main.rs`
- [Tunnel engine](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-tunnel/src/lib.rs): `client-rs/crates/gpb-tunnel/src/lib.rs`
- [Wire protocol](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-protocol/src/lib.rs): `client-rs/crates/gpb-protocol/src/lib.rs`
- [TUN and routes](https://github.com/goslynkllc/goslynk-booster/blob/main/client-rs/crates/gpb-net/src/lib.rs): `client-rs/crates/gpb-net/src/lib.rs`

### Accounts service

- [Accounts API](https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/app.js): `backend/server/src/app.js`
- [Account database](https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/db.js): `backend/server/src/db.js`
- [API runtime](https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/server.js): `backend/server/src/server.js`
- [Relay registry](https://github.com/goslynkllc/goslynk-booster/blob/main/backend/server/src/app.js): `backend/server/src/app.js`

### Relay data plane

- [Relay process](https://github.com/goslynkllc/goslynk-booster/blob/main/relay/cmd/relayd/main.go): `relay/cmd/relayd/main.go`
- [UDP relay](https://github.com/goslynkllc/goslynk-booster/blob/main/relay/internal/server/server.go): `relay/internal/server/server.go`
- [Relay TUN](https://github.com/goslynkllc/goslynk-booster/blob/main/relay/internal/tun/tun_linux.go): `relay/internal/tun/tun_linux.go`

### External systems

- **Game servers**
- **Update service**

### Other components

- **Player**

## Connections

- Player → App UI: uses
- App UI → Player screens: renders
- App UI → API client: requests
- App UI → Tauri commands: controls
- App UI → Admin screens: opens admin
- App UI → Update service: checks updates
- API client → Accounts API: HTTP requests
- API runtime → Accounts API: hosts
- API runtime → Account database: migrates
- Accounts API → Account database: queries and writes
- Accounts API → Relay registry: administers relays
- Relay registry → Account database: stores relay data
- Tauri commands → Game profiles: loads profiles
- Tauri commands → TUN and routes: configures routes
- Tauri commands → Tunnel engine: starts tunnel
- Tunnel daemon → Game profiles: loads profile
- Tunnel daemon → TUN and routes: opens TUN and routes
- Tunnel daemon → Tunnel engine: starts pumps
- Tunnel engine → Wire protocol: encodes packets
- Tunnel engine → TUN and routes: reads and writes
- Relay process → UDP relay: starts server
- UDP relay → Wire protocol: processes packets
- UDP relay → Relay TUN: forwards IP packets
- Relay TUN → Game servers: routes game traffic
