Skip to content

Razeeman/Android-SimpleTimeTracker

Repository files navigation

Simple Time Tracker

Simple app that helps track how much time you spend on all the useless activities in the world.

Get it on F-Droid Get it on Google Play Get it on GitHub

Track different activities

main_thumb

Add, change or delete activities

change_record_type_thumb change_record_type_color_thumb change_record_type_icon_thumb

View previous records

records_thumb

Add, change or delete records

change_record_thumb change_record_activity_thumb

Views statistics on different time ranges

statistics_thumb

View detailed statistics

statistics_detail1_thumb statistics_detail2_thumb

Widgets

widgets_thumb widget_universal_thumb

Notifications

notifications_types_thumb notifications_inactivity_thumb

Dark mode

darkmode1_thumb darkmode2_thumb darkmode3_thumb

Wear OS

wear1_thumb wear2_thumb wearos_demo

Technology stack

  • Kotlin
  • Multi module
  • Single Activity
  • MVVM (Jetpack ViewModel + LiveData)
  • Jetpack Navigation
  • Jetpack Compose
  • Hilt
  • Room, migrations
  • Coroutines
  • Wear OS
  • Widgets
  • Notifications
  • Custom Views (Pie Chart, Bar Chart, Color Selection, Calendar)
  • Recycler, custom Adapter Delegates, DiffUtils with Payloads
  • Drag and Drop, Gesture detection
  • Gradle Kotlin DSL
  • View Binding
  • Database backup and restore, export to csv, automatic backup
  • Dark mode
  • Unit tests, UI tests
  • CI with github actions
  • Emojis with EmojiCompat

Build flavors

  • base - F-Droid version, no google play services, no Wear OS support.
  • play - Google Play version, with google play services, Wear OS support.

Directory structure

.
├── .github                               # CI files.
├── app                                   # Mobile app.
├── buildSrc                              # Deps and versions.
├── core                                  # Shared classes, strings.
├── data_local                            # Database.
├── domain                                # Business logic.
├── navigation                            # Navigation interfaces and screen params.
├── resources                             # Common resources between phone and watch apps.
├── wear                                  # Wear OS app.
├── wear_api                              # Mobile - Wear OS communication contracts.
├── features
│   ├── feature_archive                   # Screen for archived data.
│   ├── feature_base_adapter              # Shared recycler adapters.
│   ├── feature_categories                # Screen for categories and tags.
│   ├── feature_change_activity_filter    # Edit activity filter screen.
│   ├── feature_change_category           # Edit category screen.
│   ├── feature_change_record             # Edit record screen.
│   ├── feature_change_record_tag         # Edit tag screen.
│   ├── feature_change_record_type        # Edit type screen.
│   ├── feature_change_running_record     # Edit timer screen.
│   ├── feature_date_edit                 # Data edit screen.
│   ├── feature_dialogs                   # Dialogs.
│   ├── feature_goals                     # Separate screen for goals.
│   ├── feature_main                      # Main screen with tabs.
│   ├── feature_notification              # Notifications.
│   ├── feature_records                   # One of main tabs, records list.
│   ├── feature_records_all               # Screen showing all records.
│   ├── feature_records_filter            # Dialog for records filters.
│   ├── feature_running_records           # One of main tabs, timers.
│   ├── feature_settings                  # One of main tabs, settings.
│   ├── feature_statistics                # One of main tabs, statistics.
│   ├── feature_statistics_detail         # Screen showing detailed statistics.
│   ├── feature_tag_selection             # Screen for selecting tags.
│   ├── feature_views                     # Custom views.
│   ├── feature_wear                      # Phone app logic to connect to wear app.
│   └── feature_widget                    # Widgets.

License

Android App

Copyright (C) 2020-2024 Anton Razinkov devrazeeman@gmail.com

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Wear OS App

Copyright (C) 2023-2024 Joseph Hale https://jhale.dev, @kantahrek, Anton Razinkov devrazeeman@gmail.com

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.