> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Desktop 기술 스택

Tauri 셸 내부의 기술과 각각의 역할.

## 시작하기 전에

Desktop 앱은 의도적으로 얇습니다: Rust 코어가 네이티브 창을 소유하고 webview가 웹 앱을 로드합니다. 아래의 모든 것은 이미 체크아웃에 고정되어 있습니다 — 이 페이지는 각 부분의 역할을 설명하여 이후 가이드가 이해되도록 합니다.

제품 UI, 인증, 청구, AI는 모두 창이 로드하는 웹 코드베이스에 있습니다. Desktop 전용 체크아웃에는 셸만 포함되어 있습니다 — 이 스택이 의도적으로 작은 이유입니다.


## Tauri 2 + 시스템 webview

Tauri 2는 운영 체제 고유의 webview — Windows의 WebView2, macOS의 WebKit, Linux의 WebKitGTK — 로 앱을 렌더링하므로 셸이 작게 유지되고 번들된 브라우저 런타임이 없습니다. `frontendDist`는 `apps/desktop/ui` — 웹 앱이 로드되는 동안 표시되는 부트 페이지 — 를 가리키므로 콜드 스타트에서 빈 창이 렌더링되지 않습니다.

- [Tauri](https://tauri.app)


## Rust + TypeScript

셸의 동작은 Rust — `src-tauri/src`, 에디션 2021, 최소 Rust 1.90 — 이며 cargo가 빌드합니다. TypeScript로 작성된 작은 Node 스크립트가 릴리스 프리플라이트와 업데이터 매니페스트를 처리합니다.

- [Rust](https://www.rust-lang.org)


## 플러그인을 통한 네이티브 기능

창 상태, 단일 인스턴스, 딥링크, 전역 단축키, 트레이, 로그인 시 시작, 업데이터, 외부 링크 열기, 대화 상자, 프로세스 제어는 모두 `tauri-plugin-*` 크레이트에서 옵니다 — 셸은 자체 IPC 명령을 추가하지 않습니다. 네이티브 기능 추가는 다른 플러그인을 등록하거나 이미 있는 플러그인을 연결하는 것을 의미합니다.


## tauri.conf.json + capabilities

번들 식별자 `com.supastack.desktop`, 창 목록, 플러그인 옵션, 업데이터 엔드포인트는 `src-tauri/tauri.conf.json`에 있습니다. webview 권한은 `src-tauri/capabilities/default.json`에 있습니다 — 현재 `core:default`와 시스템 브라우저 링크용 `opener:allow-open-url` — 네이티브 기능이 필요할 때만 확장됩니다.


## 검증 도구

cargo test는 Rust 로직 — URL 확인, 내비게이션 게이트, 딥링크 매핑, 업데이터 채널, 줌, 창 기본 설정 — 을 다루고, `node --check`는 부트 페이지를 검증하고 `check:release-config`는 릴리스 빌드를 게이트합니다. CI는 세 운영 체제 모두를 빌드합니다.

```
corepack pnpm --filter @supastack/desktop test
corepack pnpm --filter @supastack/desktop typecheck
corepack pnpm --filter @supastack/desktop check:release-config
```


## 다음

[shell 실행 및 구성](https://supastack.dev/ko/docs/desktop/run.md)
