Кросс‑платформенный по современным практикам Android‑проект на Kotlin и Jetpack Compose. Приложение реализует базовый аутентификационный поток, отображение статистики активности пользователя (шаги/длительность), экран настроек, а также навигацию между экранами. Архитектура строится на внедрении зависимостей через Koin, сетевых запросах на Ktor, сериализации данных через Kotlin Serialization, фоновом выполнении задач с WorkManager и безопасном хранении токенов при помощи Android Security.
- Возможности
- Архитектура и стек
- Экраны
- Хранение данных
- Права и датчики
- Структура кода (основные узлы)
- Дальнейшие планы (MVP → релиз)
- Скриншоты
MVP:
- 🔐 Аутентификация: регистрация и вход по email/паролю.
- 👣 Главный экран пользователя: отображение базовой статистики активности (например, шаги и длительность активности). На старте — mock‑данные, затем подключение реальных источников.
- ⚙️ Настройки: тема (светлая/тёмная), базовые уведомления и пр.
- 🧭 Навигация: Compose Navigation между основными экранами.
- 💾 Персистентность: хранение токена аутентификации и настроек.
- 🧩 DI через Koin: модули для сети, хранения и т. д.
Вне MVP (планируется/опционально):
- 📶 Синхронизация статистики в фоне (WorkManager).
- 📈 Расширенная аналитика активности, графики и рейтинг/лидерборд.
- 🙌 Социальные фичи (друзья, сравнение прогресса) и улучшенные разрешения.
- Язык/UI: Kotlin + Jetpack Compose.
- Навигация:
androidx.navigation.compose(см.Destinations.kt,NavigationHost.kt). - Сеть: Ktor Client для запросов к бэкенду.
- Сериализация: kotlinx.serialization.
- DI: Koin (модули: сеть, хранилище, интеракторы/репозитории).
- Фоновые задачи: WorkManager (например, отложенная синхронизация статистики).
- Безопасность: AndroidX Security (шифрование чувствительных данных).
Принципы: разделение слоёв (UI → domain → data), однонаправленный поток данных, чистые компоненты, тестируемость и минимальные связности между слоями.
-
Auth / Registration — экраны регистрации и входа по email/паролю.
Примеры файлов:AuthScreen.kt,RegistrationScreen.kt. -
Main User Screen — простая панель статистики активности: нынешние шаги, длительность активности (mock‑данные на MVP).
Пример:MainUserScreen.kt. -
Settings — переключение темы (light/dark), базовые настройки уведомлений и прочие опции.
Примеры:SettingsScreen.kt,SettingsScreenNavigation.kt. -
Navigation — декларативный граф в Compose.
Примеры:Destinations.kt,NavigationHost.kt.
-
Токены аутентификации: безопасно сохраняются локально.
Пример:TokenStorageImpl.kt(EncryptedSharedPreferences/AndroidX Security). -
Настройки: сериализуются и сохраняются локально (например, DataStore + Kotlin Serialization).
Пример:SettingsStorageImpl.kt. -
Модели: сериализуемые DTO через
kotlinx.serialization.
Для подсчёта шагов/активности и уведомлений приложению могут требоваться:
ACTIVITY_RECOGNITION— распознавание физической активности (Android 10+).BODY_SENSORS— при обращении к отдельным датчикам (если используется).POST_NOTIFICATIONS— для отправки уведомлений (Android 13+).FOREGROUND_SERVICE— при длительном сборе данных в фоне (по необходимости).
Обработка запросов разрешений инициируется в MainActivity.kt через менеджер разрешений, чтобы
корректно получать данные от сенсоров.
app/
├─ data/ # Источники данных, DTO, репозитории, Ktor‑клиент
├─ domain/ # Интерфейсы, use‑case/интеракторы, модели домена
├─ ui/ # Compose‑экраны, темы, навигация
│ ├─ auth/ # AuthScreen.kt, RegistrationScreen.kt
│ ├─ main/ # MainUserScreen.kt
│ ├─ settings/ # SettingsScreen.kt (+ навигация)
│ └─ navigation/ # Destinations.kt, NavigationHost.kt
├─ di/ # Koin‑модули: networkModule, storageModule, appModule
└─ MainActivity.kt # Точка входа, управление разрешениями и NavHost
Точное расположение файлов может отличаться; см. исходники проекта.
- Расширить графики/аналитику, экспорт/импорт данных.
- Реализовать восстановление пароля и продвинутую валидацию форм.
- Покрыть key‑модули юнит‑тестами; UI‑тесты критических сценариев.
- Sergey Boykov (Sutemi67) — разработка и поддержка проекта.



