Высокотехнологичная платформа для дистрибуции и управления Android-приложениями.
bit Hub — это современное решение для дистрибуции Android-приложений, построенное на стеке Jetpack Compose и Material 3. Платформа обеспечивает прямую доставку контента пользователям без посредников, поддерживает фоновую проверку обновлений через WorkManager и уведомления о новых версиях. Дизайн выполнен в фирменном стиле bit Blue (#2C6CFF) с поддержкой динамических цветов Material You.
| Возможность | Описание |
|---|---|
| 🚀 Динамическая витрина | Обновление списка приложений в реальном времени через Supabase |
| 📥 Фоновая дистрибуция | Нативная загрузка APK напрямую из GitHub Releases через системный DownloadManager |
| ⚡ Смарт-инсталлятор | Автоматический перехват завершённых загрузок и запуск установки |
| 🔔 Push-уведомления | Два канала уведомлений: установка приложений и проверка обновлений |
| 🕐 Фоновая проверка | Периодический UpdateWorker (каждые 2 дня) сверяет версии установленных приложений с базой данных |
| 🎨 Гибкая тема | Поддержка светлой, тёмной темы и системного режима через ThemeMode |
| 📡 Умное подключение | Настройки скачивания: только Wi-Fi или с мобильными данными |
| 🌍 Локализация | Поддержка русского и английского языков |
| 🔒 Безопасная архитектура | Модульное разделение (Data / UI / Logic) и защищённое хранение ключей через secrets.properties |
com.bit.bithub
├── data/ # Модели данных и репозитории
│ ├── AppModel.kt # Модель AppItem + mock-данные
│ ├── UpdateModels.kt # Модели для обновлений
│ ├── UpdateRepository.kt
│ └── UpdateViewModel.kt
├── screens/ # UI-экраны
│ ├── HomeScreen.kt # Главный экран (карусель, категории, секции)
│ ├── StoreScreen.kt # Магазин приложений с поиском
│ ├── AppDetailScreen.kt # Детальная страница приложения
│ └── ProfileScreen.kt # Настройки и профиль пользователя
├── components/ # Переиспользуемые Compose-компоненты
│ ├── AppItems.kt
│ ├── DownloadButton.kt
│ ├── SettingsComponents.kt
│ ├── StoreSections.kt
│ └── UpdateBottomSheet.kt
├── worker/ # Фоновые задачи
│ └── UpdateWorker.kt # Периодическая проверка обновлений
├── settings/ # Управление настройками
│ └── SettingsManager.kt
├── navigation/ # Навигация
├── ui/ # Темы и стили
├── MainActivity.kt
├── MainViewModel.kt
└── bitHubApplication.kt # Application-класс, инициализация Supabase и WorkManager
| Слой | Технологии |
|---|---|
| UI | Jetpack Compose, Material 3, Adaptive Navigation Suite |
| Networking | Ktor Client, Kotlinx Serialization |
| Image Loading | Coil |
| Backend | Supabase (Postgrest) |
| Background Tasks | WorkManager (CoroutineWorker) |
| Architecture | MVVM, Clean Architecture |
| Notifications | NotificationCompat, два канала (INSTALL_CHANNEL, UPDATES_CHANNEL) |
| Min SDK | 23 (Android 6.0+) |
| Target SDK | 36 (Android 16) |
| Language | Kotlin 2.0+ |
Создайте файл secrets.properties в корневом каталоге проекта:
SUPABASE_URL=https://ваш-проект.supabase.co
SUPABASE_KEY=ваш-анонимный-ключ
⚠️ Файлsecrets.propertiesдобавлен в.gitignore— не передавайте ключи в репозиторий.
Для развёртывания бэкенда выполните SQL-скрипт:
create table apps (
id bigint primary key generated always as identity,
title text not null,
developer text,
rating float8,
reviews text,
size text,
description text,
icon_url text,
icon_color text, -- HEX-код цвета иконки (#RRGGBB)
is_game boolean default false,
download_url text, -- прямая ссылка на APK в GitHub Releases
package_name text, -- например, com.bit.stream
version_code text, -- строка версии: "1.2.0"
version_number int default 0 -- числовой код версии для сравнения
);
-- Публичный доступ на чтение (Row Level Security)
alter table apps enable row level security;
create policy "Allow public read access" on apps for select using (true);UpdateWorker запускается автоматически каждые 2 дня при наличии сети. Поведение регулируется через SettingsManager:
| Настройка | Описание |
|---|---|
periodicUpdateCheck |
Включить/выключить фоновую проверку |
updateOverMobileData |
Разрешить проверку через мобильную сеть |
downloadWifiOnly |
Скачивать приложения только по Wi-Fi |
useMobileData |
Общий доступ к интернету через мобильную сеть |
При обнаружении обновлений пользователь получает уведомление в канале UPDATES_CHANNEL.
| ID | Назначение |
|---|---|
INSTALL_CHANNEL |
Успешная установка приложения |
UPDATES_CHANNEL |
Доступны обновления для установленных приложений |
- Бренд: bit Hub (регистр «bit» всегда строчный).
- Package:
com.bit.bithub. - Entry Point:
BitHubApplication.
- Выполните Sync Project with Gradle Files.
- Убедитесь, что
secrets.propertiesсодержит актуальные ключи Supabase. - Проверьте, что
download_urlв базе данных ведёт напрямую на.apk-файл. - Соберите проект через Build → Rebuild Project.
