# cikian/cikpier architecture

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

## Overview

CikPier is a Windows graphical client for the official frpc executable. Users enter server settings in the first-run wizard, then manage proxies and inspect translated connection logs through the UI; Go backend methods coordinate configuration, the frpc process, and its local Admin API. The README also documents diagnostics, port prechecks, tray/startup behavior, architecture warnings, and visitor proxies. Those capabilities are represented at their documented source locations; implementation details beyond the excerpts are not assumed.

Main entry points: [`app/app.go`](https://github.com/cikian/cikpier/blob/main/app/app.go) (App methods), [`app/frontend/src/main.js`](https://github.com/cikian/cikpier/blob/main/app/frontend/src/main.js) (Client UI), [`app/internal/frpcman/manager.go`](https://github.com/cikian/cikpier/blob/main/app/internal/frpcman/manager.go) (Process manager), [`app/internal/frpcapi/client.go`](https://github.com/cikian/cikpier/blob/main/app/internal/frpcapi/client.go) (Admin API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_ui["Client UI<br/>[main.js]"]
end

subgraph group_orchestration["Application orchestration"]
  node_backend["App methods<br/>[app.go]"]
  node_bindings["Bound operations<br/>[export.go]"]
  node_config["Connection config<br/>[cfgfile.go]"]
  node_entry["Wails entry<br/>[main.go]"]
end

subgraph group_frp_runtime["frpc runtime"]
  node_manager["Process manager<br/>[manager.go]"]
  node_logparse["Log translation<br/>[logparse.go]"]
  node_adminapi["Admin API client<br/>[client.go]"]
end

subgraph group_platform["Windows integration"]
  node_tray["Tray integration<br/>[tray.go]"]
  node_trayicon["Status icons<br/>[trayicon.go]"]
  node_arch["Architecture hints<br/>[arch.go]"]
end

node_user(("User"))
node_frpc["Official frpc"]

node_user -->|"uses"| node_ui
node_ui -->|"invokes"| node_bindings
node_entry -->|"creates and binds"| node_backend
node_backend -->|"reads and saves"| node_config
node_backend -->|"starts and stops"| node_manager
node_backend -->|"manages proxies"| node_adminapi
node_manager -->|"parses output"| node_logparse
node_manager -->|"launches and monitors"| node_frpc
node_adminapi -->|"HTTP requests"| node_frpc
node_tray -.->|"uses status icons"| node_trayicon
node_backend -.->|"reports connection state"| node_tray
node_ui -.->|"shows architecture warning"| node_arch

click node_ui "https://github.com/cikian/cikpier/blob/main/app/frontend/src/main.js"
click node_backend "https://github.com/cikian/cikpier/blob/main/app/app.go"
click node_bindings "https://github.com/cikian/cikpier/blob/main/app/export.go"
click node_config "https://github.com/cikian/cikpier/blob/main/app/internal/cfgfile/cfgfile.go"
click node_manager "https://github.com/cikian/cikpier/blob/main/app/internal/frpcman/manager.go"
click node_logparse "https://github.com/cikian/cikpier/blob/main/app/internal/frpcman/logparse.go"
click node_adminapi "https://github.com/cikian/cikpier/blob/main/app/internal/frpcapi/client.go"
click node_tray "https://github.com/cikian/cikpier/blob/main/app/tray.go"
click node_trayicon "https://github.com/cikian/cikpier/blob/main/app/trayicon.go"
click node_arch "https://github.com/cikian/cikpier/blob/main/app/arch.go"
click node_entry "https://github.com/cikian/cikpier/blob/main/app/main.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_user toneBlue
class node_backend,node_bindings,node_config,node_entry toneAmber
class node_manager,node_logparse,node_adminapi toneMint
class node_tray,node_trayicon,node_arch toneRose
class node_frpc toneIndigo
```

## Components

### User experience

- [Client UI](https://github.com/cikian/cikpier/blob/main/app/frontend/src/main.js): `app/frontend/src/main.js`

### Application orchestration

- [App methods](https://github.com/cikian/cikpier/blob/main/app/app.go): `app/app.go`
- [Bound operations](https://github.com/cikian/cikpier/blob/main/app/export.go): `app/export.go`
- [Connection config](https://github.com/cikian/cikpier/blob/main/app/internal/cfgfile/cfgfile.go): `app/internal/cfgfile/cfgfile.go`
- [Wails entry](https://github.com/cikian/cikpier/blob/main/app/main.go): `app/main.go`

### frpc runtime

- [Process manager](https://github.com/cikian/cikpier/blob/main/app/internal/frpcman/manager.go): `app/internal/frpcman/manager.go`
- [Log translation](https://github.com/cikian/cikpier/blob/main/app/internal/frpcman/logparse.go): `app/internal/frpcman/logparse.go`
- [Admin API client](https://github.com/cikian/cikpier/blob/main/app/internal/frpcapi/client.go): `app/internal/frpcapi/client.go`

### Windows integration

- [Tray integration](https://github.com/cikian/cikpier/blob/main/app/tray.go): `app/tray.go`
- [Status icons](https://github.com/cikian/cikpier/blob/main/app/trayicon.go): `app/trayicon.go`
- [Architecture hints](https://github.com/cikian/cikpier/blob/main/app/arch.go): `app/arch.go`

### Other components

- **User**
- **Official frpc**

## Connections

- User → Client UI: uses (evidence: `README.md`)
- Client UI → Bound operations: invokes (evidence: `app/frontend/src/main.js`)
- Wails entry → App methods: creates and binds (evidence: `app/main.go`)
- App methods → Connection config: reads and saves (evidence: `app/app.go`)
- App methods → Process manager: starts and stops (evidence: `app/app.go`)
- App methods → Admin API client: manages proxies (evidence: `app/app.go`)
- Process manager → Log translation: parses output (evidence: `app/internal/frpcman/manager.go`)
- Process manager → Official frpc: launches and monitors (evidence: `app/internal/frpcman/manager.go`)
- Admin API client → Official frpc: HTTP requests (evidence: `README.md`)
- Tray integration → Status icons: uses status icons
- App methods → Tray integration: reports connection state
- Client UI → Architecture hints: shows architecture warning
