README.md

August 1, 2026 ยท View on GitHub


TimePlanner logo

TimePlanner

Kotlin Android API Jetpack Compose License

Latest release GitHub stars GitHub forks
Total downloads Repository code size Contributors Repository views


TimePlanner application preview

Download ๐Ÿ“ฅ

Download from AppGallery Download from RuStore Get it on F-Droid

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 ๐Ÿ“ธ

TimePlanner screenshot 1 TimePlanner screenshot 2 TimePlanner screenshot 3
TimePlanner screenshot 4 TimePlanner screenshot 5 TimePlanner screenshot 6
00-all-widgets

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 ๐Ÿš€

AreaTechnology
LanguageKotlin 2.3.21
UIJetpack Compose 1.11.4, Material 3 1.4.0
Adaptive UIMaterial 3 Adaptive 1.2.0, Material 3 Adaptive Navigation Suite
ArchitectureClean Architecture, MVI, multi-module feature isolation
NavigationDecompose 3.5.0, Essenty 2.5.0
Dependency injectionDagger 2.60.1 with KSP
Asynchronous workKotlin Coroutines 1.11.0 and Flow
PersistenceRoom 2.8.4 with KSP
SerializationKotlin Serialization
WidgetsJetpack Glance
ChartsCharty
DiagnosticsLeakCanary 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 ๐Ÿงฑ

FlavorPurpose
fdroidOpen-source distribution without store diagnostics
rustoreRuStore distribution with OK Tracer diagnostics
huaweiAppGallery 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 ๐Ÿ“

TimePlanner feature structure

MVI flow ๐Ÿ”„

TimePlanner MVI flow

TimePlanner MVI architecture

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.

serrq

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.