README.md
August 1, 2026 ยท View on GitHub
Download ๐ฅ
You can also download APK files from GitHub Releases.
Features โจ
Timeline-based daily planning ๐๏ธ
- Create a separate schedule for every date.
- Switch between agenda and timeline views.
- Add tasks with exact start and end times.
- Prevent overlapping tasks before they are saved.
- Keep tasks without a fixed time in a dedicated inbox.
- Convert an unscheduled task into a scheduled one when the time is known.
- Move, resize, edit, complete, and reorganize tasks throughout the day.
- Organize tasks with main categories, subcategories, priorities, notes, and statistics settings.
Templates and recurring tasks ๐
- Create templates for frequently repeated activities.
- Repeat by weekday, N-th weekday of a month, day of month, or annual date.
- Generate upcoming schedules automatically.
- Update or stop repeating templates.
- Keep generated tasks linked to their source template until they are manually detached.
- Skip generated occurrences that conflict with an existing task.
Notifications ๐
- Notify before a task starts.
- Notify at the start of a task.
- Notify shortly before a task ends.
- Show an ongoing notification while the current task is running.
- Restore scheduled notifications after reboot, application update, time change, date change, timezone change, or exact-alarm permission changes.
Analytics ๐
- Explore a week, month, half-year, year, or custom calendar range.
- Review planned and completed time, task counts, workload trends, and key metrics.
- Compare time by category and drill down into subcategory analytics.
- Inspect task creation timing, planning regularity, duration structure, template usage, and busiest hours.
- Open category-specific trends, time-of-day distribution, contributing tasks, and observations.
- Optional exclusion of individual tasks from statistics.
Goals ๐ฏ
- Create duration or task-count goals with a concrete calendar deadline.
- Track all statistical tasks, a category, or a subcategory without manual check-ins.
- Use minimum targets or maximum limits.
- Review live progress in Overview and open detailed goal statistics.
- Keep immutable completed-goal history even after an active goal is deleted.
- Continue tracking an expired minimum goal through the current local day so it can still be achieved later.
Personalization and accessibility ๐จ
- Material 3 interface built with Jetpack Compose.
- Light, dark, and system theme modes.
- Dynamic Color on supported devices.
- Pink, purple, red, and blue built-in color schemes.
- Compact and expanded task presentation.
- Persistent agenda or timeline home mode.
- Configurable duration presets.
- Configurable analytics range and calendar-button behavior.
- Secure mode for sensitive content.
- Home-screen widget powered by Jetpack Glance.
Adaptive interface ๐
- Bottom navigation on compact windows and a navigation rail when more space is available.
- Window-size-aware grids, supporting panes, and list-detail layouts.
- Dedicated layouts for medium, expanded, large, and extra-large windows.
- Fold-aware book and tabletop arrangements that keep controls away from separating hinges.
- Resizable layouts suitable for tablets, split-screen, ChromeOS, and desktop-style Android windows.
- The compact phone interface keeps its original navigation and content structure.
Backup and portability ๐พ
- Export schedules, templates, categories, unscheduled tasks, goals, and goal history.
- Restore data from a backup file.
- Clear application data or reset only settings.
Screenshots ๐ธ
Supported languages ๐
- English ๐ฌ๐ง
- Russian ๐ท๐บ
- German ๐ฉ๐ช
- Spanish ๐ช๐ธ
- Persian ๐ฎ๐ท
- French ๐ซ๐ท
- Brazilian Portuguese ๐ง๐ท
- Turkish ๐น๐ท
- Vietnamese ๐ป๐ณ
- Polish ๐ต๐ฑ
- Italian ๐ฎ๐น
- Chinese ๐จ๐ณ
Architecture ๐๏ธ
TimePlanner follows a multi-module Clean Architecture approach with feature-level isolation.
:app
โโโ root navigation
โโโ dependency graph
โโโ Android receivers
โโโ notification runtime
:widgets
โโโ Jetpack Glance application widgets
:core
โโโ :utils architecture primitives, MVI contracts, date/time and notification helpers
โโโ :domain shared entities, repositories, managers and validation
โโโ :data Room databases, DAO, migrations and repository implementations
โโโ :presentation shared presentation models and mappers
โโโ :ui Material 3 theme, design tokens and reusable Compose components
:features
โโโ :home
โโโ :overview
โโโ :templates
โโโ :editor
โโโ :analytics
โโโ :settings
Each feature is split into two modules:
feature:api public contracts, configuration and navigation API
feature:impl UI, presentation, interactors, DI and internal navigation
The application uses a single MainActivity, Decompose for navigation, Dagger for dependency injection, and an MVI presentation layer built around ComposeStore, FlowWorkProcessor, state, events, actions, effects, inputs, and outputs.
Repository-backed data follows one flow in both directions:
Read: Repository Flow -> Interactor -> WorkProcessor -> ComposeStore -> Compose UI
Write: UI Event -> ComposeStore -> WorkProcessor -> Interactor -> Repository
Adaptive window and fold posture information remains in the Compose layout layer and does not enter domain models or navigation state.
Technology stack ๐
| Area | Technology |
|---|---|
| Language | Kotlin 2.3.21 |
| UI | Jetpack Compose 1.11.4, Material 3 1.4.0 |
| Adaptive UI | Material 3 Adaptive 1.2.0, Material 3 Adaptive Navigation Suite |
| Architecture | Clean Architecture, MVI, multi-module feature isolation |
| Navigation | Decompose 3.5.0, Essenty 2.5.0 |
| Dependency injection | Dagger 2.60.1 with KSP |
| Asynchronous work | Kotlin Coroutines 1.11.0 and Flow |
| Persistence | Room 2.8.4 with KSP |
| Serialization | Kotlin Serialization |
| Widgets | Jetpack Glance |
| Charts | Charty |
| Diagnostics | LeakCanary in debug builds, OK Tracer in store builds |
Current project baseline for version 2.0.0:
- Minimum Android version: API 24.
- Compile and target SDK: 37.
- JVM target: 17.
- Gradle: 9.5.0.
- Android Gradle Plugin: 9.3.0.
- KSP: 2.3.10.
Build variants ๐งฑ
| Flavor | Purpose |
|---|---|
fdroid | Open-source distribution without store diagnostics |
rustore | RuStore distribution with OK Tracer diagnostics |
huawei | AppGallery distribution with OK Tracer diagnostics |
The release build enables code shrinking, resource shrinking, ProGuard/R8 rules, and signing configuration.
Build from source ๐ ๏ธ
Requirements โ
- A current Android Studio version with Android Gradle Plugin 9.3 support.
- JDK 17.
- Android SDK 37.
Local properties ๐
The application module uses an explicit signing configuration for both debug and release builds. Add these values to local.properties:
storeFile=/absolute/path/to/your.keystore
storePassword=your_store_password
keyAlias=your_key_alias
keyPassword=your_key_password
The rustore and huawei variants additionally require OK Tracer credentials:
tracerPluginToken=your_plugin_token
tracerAppToken=your_application_token
The fdroid variant does not use the store diagnostics dependencies.
Steps โถ๏ธ
git clone https://github.com/v1tzor/TimePlanner.git
cd TimePlanner
./gradlew :app:assembleFdroidDebug
Alternatively, open the project in Android Studio, select the desired flavor and build type, then run the app configuration.
Project diagrams ๐บ๏ธ
Standard feature structure ๐
MVI flow ๐
Useful verification commands:
./gradlew :app:assembleFdroidDebug
./gradlew :features:home:impl:testDebugUnitTest
./gradlew :features:analytics:impl:testDebugUnitTest
Support development โค๏ธ
TimePlanner is an independent open-source project. You can support its continued development through the donation page below.
Direct cryptocurrency addresses
USDT(ERC20): 0xbA08E4905B3d52f480419A8444C4de3E91BC98df
BTC: bc1qu0a5ujldf8rpc8yz8atlgphrj9wutgfxw82dql
ETH: 0x4cAfa6De0D1968cA8C2a7aB06CE28d0A1aD2C7b9
TRX: TKC3NsKSS9hJRvofeJKceT5wC2bqTkPRUE
LTC: ltc1qj9fsz4pxrvr3eqyel4q8jnsnfpcfwdsj3mvpec
XEC: ecash:qqc0k95nfhkseel9p4avz5jwk6s4vum7rceegten5x
BNB/BTCB: 0xbA08E4905B3d52f480419A8444C4de3E91BC98df
Sponsors โจ
Thank you to everyone who supports the project.
License ๐
Copyright 2026 Stanislav Aleshin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.