2.7 KiB
2.7 KiB
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
Сборка и тесты
./gradlew assembleDebug
./gradlew test
./gradlew connectedDebugAndroidTest # устройство или эмулятор
JDK 21 рекомендуется (см. toolchain в Gradle).
Требования
- Android с поддержкой Compose
- Для OAuth и удалённых vault — сеть
- Для фонового шифрования и sync — достаточно RAM под Worker и Room