the file structure has been created and the application's basic architecture has been defined
This commit is contained in:
63
docs/ARCHITECTURE.md
Normal file
63
docs/ARCHITECTURE.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user