� Архітектура Десктопного Клієнта (Tauri v2 + Rust)
📌 Чому Tauri v2 замість Electron?
| Параметр | Electron | Tauri v2 (SmartFeed Studio) |
|---|---|---|
| Розмір інсталятора | 80–120 МБ+ | ~10–15 МБ |
| Споживання оперативної пам’яті (RAM) | 200–450 МБ у простої | ~30–50 МБ |
| Вбудований рушій | Окремий важкий Chromium | Системний WebView (WebKit/WebView2) |
| Безпека ядра | Node.js (ризик прототипного забруднення) | Суворе керування пам’яттю на Rust |
| Доступ до ОС | Обмежений або через важкі аддони | Нативні Rust-крейти (keyring, rusqlite) |
🔒 Апаратна Безпека: OS Keychain & SQLCipher
-
Збереження JWT Refresh Токенів (
keyringcrate):- Файл:
apps/desktop/src-tauri/src/lib.rs. - Замість ненадійного
localStorageу браузері, функціяstore_refresh_tokenзаписує токен у системне апаратне сховище ОС:- macOS: Apple Keychain Services.
- Windows: Windows Credential Manager.
- Linux: Secret Service API / GNOME Keyring / KWallet.
- При запуску додатку Rust команда
get_refresh_tokenзчитує токен, а при логаутіdelete_refresh_tokenнадійно стирає його.
- Файл:
-
Локальне Кешування Товарів (
rusqlite+sqlcipher):- Великі каталоги (десятки тисяч рядків) зберігаються в локальній базі даних SQLite, зашифрованій ключем за алгоритмом AES-256 (SQLCipher).
- Навіть при фізичному доступі до жорсткого диска неможливо прочитати товарні дані або ціни без ключа розшифрування.