Большинство приложений для привычек — либо слишком простые, либо перегруженные платными функциями. Flowbit занимает середину: всё, что нужно для серьёзного трекинга — без подписок, без рекламы, без облака.
- 📴 100% офлайн — ваши данные хранятся только на устройстве
- 🎨 Material You — виджеты и интерфейс меняют цвет под ваши обои
- ⚡ Быстро — галочка за одно касание, виджет на рабочем столе
- 🔓 Открытый код — без скрытых трекеров и аналитики
|
|
|
|
|
|
| Слой | Технология |
|---|---|
| UI | Jetpack Compose + Material 3 |
| Виджеты | Jetpack Glance 1.1 · PreferencesGlanceStateDefinition |
| DI | Hilt |
| БД | Room 2.6 · SQLite · миграции v1→v11 |
| Изображения | Coil 2.6 + android-image-cropper |
| Фон | AlarmManager · WorkManager |
| Настройки | DataStore Preferences |
| Навигация | Navigation Compose 2.7 |
| Drag-and-drop | sh.calvin.reorderable 2.4 |
| CI/CD | GitHub Actions · auto versionName по числу коммитов |
git clone https://github.com/keshtoim/Flowbit.git
cd Flowbit
./gradlew assembleDebugТребования: Android Studio Ladybug+, JDK 17, Android 5.0+ (API 21)
APK → app/build/outputs/apk/debug/app-debug.apk
app/
├── data/
│ ├── database/ # Room: сущности, DAO, миграции (v1→v11)
│ ├── receiver/ # AlarmManager BroadcastReceiver-ы
│ ├── repository/ # Реализации репозиториев
│ └── worker/ # WorkManager: InactivityCheckWorker
├── domain/
│ ├── model/ # Habit, HabitEntry, HabitTag…
│ ├── repository/ # Интерфейсы
│ └── usecase/ # Бизнес-логика
├── presentation/
│ ├── habits/ # Список · редактор · детали
│ ├── statistics/ # Графики и тепловая карта
│ ├── weekly/ # Экран итогов недели
│ ├── settings/ # Настройки · бекап · язык
│ └── theme/ # Material You + тёмная тема
└── widget/ # 3 Glance-виджета + IncrementHabitAction
Clean Architecture: presentation → domain ← data. ViewModel не знает про БД, UseCase не знает про Compose.
| Разрешение | Зачем |
|---|---|
POST_NOTIFICATIONS |
Уведомления-напоминания (Android 13+) |
SCHEDULE_EXACT_ALARM |
Точное время напоминания |
RECEIVE_BOOT_COMPLETED |
Восстановление будильников после перезагрузки |
READ_MEDIA_IMAGES |
Выбор фото из галереи (Android 13+) |
READ_MEDIA_AUDIO |
Выбор аудиофайла из галереи (Android 13+) |
MIT License · сделано с ❤️ by Keshtoim