# Architectural Guidance: Кроссплатформенный Менеджер Паролей Эта документация детально описывает архитектурные решения, структуру проекта и стандарты разработки, обеспечивающие безопасность, масштабируемость и поддерживаемость системы. ## 1. Архитектурные принципы и паттерны ### Backend (Rust / Tauri) - **Separation of Concerns (SoC):** Четкое разделение между инфраструктурой Tauri (`commands/`), бизнес-логикой (`core/`) и слоем данных (`database/`). - **Dependency Inversion:** Ядро системы (`core/`) не зависит от деталей реализации Tauri. - **Repository Pattern:** Работа с SQLite инкапсулирована в репозиториях, что позволяет легко менять схему БД или переходить на другой движок. ### Frontend (Angular) - **Domain-Driven Design (DDD):** Структура папок организована вокруг бизнес-доменов (`auth`, `vault`), а не технических типов (все компоненты в одной куче). - **Strategy Pattern:** Используется в `CryptoStrategyService` для гибкого переключения между методами аутентификации (пароль, биометрия). - **Adapter Pattern:** `TauriIpcService` скрывает детали взаимодействия с Tauri API, предоставляя чистые RxJS интерфейсы. - **Smart/Dumb Components:** Четкое разделение ответственности: "умные" компоненты управляют состоянием, "глупые" — только отображением. ## 2. Структура папок и именование ### Backend Structure (`src-tauri/src/`) ```text src-tauri/src/ ├── commands/ # Обработчики IPC. Имя: [domain].rs (например, auth.rs) ├── core/ # Математика и логика. Имя: [feature].rs (например, crypto.rs) ├── database/ # SQL и миграции. ├── events/ # Рассылка событий во фронтенд. └── main.rs # Конфигурация приложения. ``` ### Frontend Structure (`src/app/`) ```text src/app/ ├── core/ # Singleton сервисы (Crypto, Auth, Ipc) ├── models/ # Классы сущностей. Имя: [name].model.ts ├── shared/ # UI-кит (Buttons, Inputs, Cards) └── features/ # Модули фич. Свои компоненты, роуты и локальные сервисы. ``` ## 3. Контракты и интерфейсы (Примеры) ### IPC Command (Rust -> TS) **Rust:** ```rust #[tauri::command] pub async fn decrypt_vault(password: String, vault_path: PathBuf) -> Result { ... } ``` **TypeScript:** ```typescript interface VaultData { accounts: AccountDTO[]; updatedAt: number; } ``` ## 4. Стратегия безопасности 1. **Zero Trust Storage:** Данные шифруются индивидуальным ключом DEK, который не хранится на диске без системной защиты (Keyring). 2. **Memory Safety:** Rust гарантирует отсутствие утечек памяти в ядре. В Angular `VaultService` обязуется очищать `BehaviorSubject` при потере фокуса или блокировке. 3. **Argon2id:** Минимум 2 прохода, 64МБ памяти (настраиваемо) для защиты от брутфорса. ## 5. Управление зависимостями - **Rust:** Использование `cargo-edit` для контроля версий. Минимизация `unsafe` кода. - **Frontend:** Строгое следование версиям в `package.json`. Использование `ESLint` со строгими правилами для Angular.