4.2 KiB
4.2 KiB
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/)
src-tauri/src/
├── commands/ # Обработчики IPC. Имя: [domain].rs (например, auth.rs)
├── core/ # Математика и логика. Имя: [feature].rs (например, crypto.rs)
├── database/ # SQL и миграции.
├── events/ # Рассылка событий во фронтенд.
└── main.rs # Конфигурация приложения.
Frontend Structure (src/app/)
src/app/
├── core/ # Singleton сервисы (Crypto, Auth, Ipc)
├── models/ # Классы сущностей. Имя: [name].model.ts
├── shared/ # UI-кит (Buttons, Inputs, Cards)
└── features/ # Модули фич. Свои компоненты, роуты и локальные сервисы.
3. Контракты и интерфейсы (Примеры)
IPC Command (Rust -> TS)
Rust:
#[tauri::command]
pub async fn decrypt_vault(password: String, vault_path: PathBuf) -> Result<VaultData, String> { ... }
TypeScript:
interface VaultData {
accounts: AccountDTO[];
updatedAt: number;
}
4. Стратегия безопасности
- Zero Trust Storage: Данные шифруются индивидуальным ключом DEK, который не хранится на диске без системной защиты (Keyring).
- Memory Safety: Rust гарантирует отсутствие утечек памяти в ядре. В Angular
VaultServiceобязуется очищатьBehaviorSubjectпри потере фокуса или блокировке. - Argon2id: Минимум 2 прохода, 64МБ памяти (настраиваемо) для защиты от брутфорса.
5. Управление зависимостями
- Rust: Использование
cargo-editдля контроля версий. Минимизацияunsafeкода. - Frontend: Строгое следование версиям в
package.json. ИспользованиеESLintсо строгими правилами для Angular.