Files
Wallenc/README.md
2026-06-02 18:36:16 +03:00

54 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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