Files
abdristus/docs/ARCHITECTURE.md

64 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<VaultData, String> { ... }
```
**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.