# Wallenc Android-приложение для **защищённого хранения** файлов и секретов: шифрование выполняется на устройстве до выгрузки во внешнее хранилище. Собственного backend нет — клиент и API провайдеров (Яндекс.Диск и др.). ## Задача Иерархия **VaultsManager → vault → storage → файлы**: | Уровень | Смысл | |---------|--------| | Локальный vault | Один на устройстве, список storage | | Удалённый vault | Подключение по OAuth (Яндекс) | | Storage | Папка/контейнер с файлами, метаданные в Room | | Шифрование | AES на storage; ключ не передаётся провайдеру | | Sync | Журнал изменений, группы storage, фоновые задачи | | Секреты / 2FA | Текстовые записи и TOTP внутри открытого storage | Провайдер хранилища и сеть считаются недоверенными. Room хранит только служебные данные (метаданные, токены, журнал sync), не пользовательский контент в открытом виде. ## Модули ``` app/ — точка входа, Hilt, навигация domain/ — интерфейсы и доменные модели usecases/ — сценарии (шифрование, sync, CRUD storage) domain-vault/ — storage, Яндекс.Диск, Encryptor ui/ — Jetpack Compose infrastructure-android/ — Room, DAO, платформенные реализации vault-contracts/ — контракты для новых провайдеров task-runtime/ — очередь длительных операций ``` **Архитектура:** MVVM + Clean Architecture (`ui` → `usecases` / `domain` → `domain-vault` / `infrastructure-android`). ## Стек Kotlin · Jetpack Compose · Coroutines / Flow · Hilt · Room · WorkManager · клиентское AES ## Сборка и тесты ```bash ./gradlew assembleDebug ./gradlew test ./gradlew connectedDebugAndroidTest # устройство или эмулятор ``` JDK 21 рекомендуется (см. toolchain в Gradle). ## Требования - Android с поддержкой Compose - Для OAuth и удалённых vault — сеть - Для фонового шифрования и sync — достаточно RAM под Worker и Room