54 lines
2.7 KiB
Markdown
54 lines
2.7 KiB
Markdown
# 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
|