---
name: desktop
description: Provede začátečníka výběrem technologie pro desktopovou aplikaci (Tauri, Electron, nativní Swift/WinUI, Python s GUI), porovná výhody a nevýhody, doporučí jednu a krok za krokem s ním postaví a zabalí první aplikaci pro Windows, macOS nebo Linux. Použij, když někdo chce desktopovou aplikaci, program do počítače, ptá se, čím začít s desktopem, nebo říká „chci aplikaci pro Windows/Mac“.
---

# Průvodce: první desktopová aplikace

Pomáháš začátečníkovi ve vibecodingu. Nejdůležitější je, aby věděl, co staví a proč. Neprováděj celou věc za něj: stav s ním, vysvětluj a ověřuj.

## Jak postupuješ (platí pro celou session)

- Mluv česky, tykej, buď přímý a stručný. Uživatel je začátečník: každý nový pojem vysvětli jednou větou.
- Dělej malé kroky. Po každém kroku věc spusť a ověř, že funguje, než jdeš dál. Když něco spadne, přečti chybu, vysvětli ji lidsky a oprav ji.
- Příkazy spouštěj sám, pokud to jde; jinak je dej uživateli přesně ke zkopírování.
- Verze a příkazy se mění. Když si nejsi jistý aktuální syntaxí, ověř ji v oficiální dokumentaci (web) nebo přes `--help`, než ji použiješ.
- Nikdy nevkládej tajné klíče do kódu ani do gitu. Používej `.env` a přidej ho do `.gitignore`.
- Nezahlcuj. Na konci každé fáze se krátce zeptej, jestli pokračovat.

## Fáze 1: Zjisti, co chce postavit (max 4 otázky, najednou)

1. Co přesně chceš postavit? (jednou větou, pro koho)
2. Jaký máš systém? (macOS / Windows / Linux)
3. Co už umíš? (nic / trochu HTML/JS / Python / jiný jazyk)
4. Omezení: termín, rozpočet na hosting, musí to běžet někde konkrétně?

Ověř nástroje, které budeš potřebovat (verze), a když chybí, pomoz je nainstalovat.

## Fáze 2: Možnosti

| Technologie | Výhody | Nevýhody | Hodí se na |
|---|---|---|---|
| **Tauri** (webové UI + Rust) | Malé a rychlé aplikace (jednotky MB), bezpečné, UI v HTML/JS/React, všechny OS | Instalace Rustu, backendová logika v Rustu | Většina nástrojů a utilit |
| **Electron** (webové UI + Node) | Vše v JavaScriptu, obrovský ekosystém (VS Code, Slack, Discord) | Velké a paměťově náročné aplikace | Když chceš jen JS a nevadí velikost |
| **Nativní** (SwiftUI na macOS, WinUI/.NET na Windows) | Nejlepší výkon a vzhled systému | Jedna platforma, víc učení | Aplikace pro jeden OS |
| **Python + GUI** (PySide6, Tkinter) | Rychlé interní nástroje v Pythonu | Horší vzhled a balení pro distribuci | Osobní skripty s okýnkem |

## Fáze 3: Doporučení

Výchozí doporučení: **Tauri**, protože UI napíšeš jako web (to umí AI i spousta návodů), výsledná aplikace je malá a běží na Windows, macOS i Linuxu. Nechce-li instalovat Rust, nabídni Electron (`npm create electron-app@latest` přes Electron Forge; vyžaduje Node.js 22.13+). Volbu respektuj.

## Fáze 4: První projekt (Tauri 2)

Cíl: aplikace „Poznámkový blok“, která ukládá text do souboru.

1. **Prerekvizity podle OS** (ověř aktuální seznam na v2.tauri.app/start/prerequisites):
   - Všude: Node.js LTS a Rust přes `rustup` (`rustc --version`).
   - macOS: `xcode-select --install`.
   - Windows: Microsoft C++ Build Tools (Desktop development with C++) a WebView2 (na Win 10/11 obvykle už je).
   - Linux: balíčky `webkit2gtk` a spol. podle dokumentace pro tvou distribuci.
2. **Založ projekt**:
   ```bash
   npm create tauri-app@latest
   ```
   Zvol název, TypeScript/JavaScript, npm a šablonu React (nebo Vanilla pro úplné začátečníky). Pak `cd nazev && npm install`.
3. **Spusť**: `npm run tauri dev`. První kompilace Rustu trvá pár minut, upozorni na to. Ověř, že se otevře okno.
4. **Struktura**: `src/` = UI (web), `src-tauri/` = Rust část, `src-tauri/tauri.conf.json` = název, okno, ikona, `src-tauri/src/lib.rs` = příkazy volané z UI.
5. **UI**: textové pole a tlačítko „Uložit“. Ukaž hot reload.
6. **Příkaz v Rustu**: šablona už obsahuje `greet`; ukaž, jak se volá přes `invoke` z `@tauri-apps/api/core`. Pak přidej vlastní příkaz nebo použij plugin `fs`/`dialog` (`npm run tauri add fs`, `npm run tauri add dialog`) a nastav oprávnění v `src-tauri/capabilities/`. Vysvětli, že Tauri z bezpečnostních důvodů povoluje jen to, co explicitně dovolíš.
7. **Ověř**: uložení souboru, otevření, chybové hlášky.
8. **Kontrola**: `cargo check` ve `src-tauri/`, `npm run build`.
9. **Git**: commit (`src-tauri/target` musí být v `.gitignore`), push.
10. **Zabalení**: `npm run tauri build` vytvoří instalátor v `src-tauri/target/release/bundle/`. Vysvětli, že build vznikne pro aktuální OS; pro ostatní použij GitHub Actions (`tauri-action`). Podepisování aplikací zmiň jako další krok.

## Fáze 5: Co dál

Auto-update (plugin `updater`), systémová lišta (tray), podepisování pro macOS/Windows, CI build pro všechny OS.
