Razeeman /
Android-SimpleTimeTracker
Simple app that tracks time.
Loading repository data…
Shoaibkhalid65 / repository
A productivity app for developers and students to track daily work sessions, manage tasks, and set goals. Built with Kotlin, Jetpack Compose, Room, and Material 3.
A modern Android productivity app for tracking daily tasks, work durations, and long-term goals — with an analytics dashboard built on top
https://github.com/user-attachments/assets/80b39af7-7174-4934-bd32-2e41cc0507bf
ProgressTracker helps you answer three questions every day.
Goals are tracked separately with a priority matrix (urgency × importance × difficulty) and an expected completion date, giving you a structured way to plan longer-horizon work alongside day-to-day activity
| Layer | Technology |
|---|---|
| Language | Kotlin |
| UI framework | Jetpack Compose + Material 3 |
| Architecture | MVVM + Repository pattern |
| Dependency injection | Dagger Hilt |
| Local database | Room (SQLite) |
| Reactive state | StateFlow / SharedFlow |
| Preferences | Jetpack DataStore |
| Background work | Android Foreground Service |
| Animations | Lottie (timer animation) |
| Navigation | Jetpack Navigation Compose |
| Min SDK | 26 (Android 8.0) |
| Target SDK | 35 |
The project follows a clean, layered MVVM architecture:
UI Layer → Jetpack Compose screens + Hilt ViewModels
ViewModel Layer → StateFlow/SharedFlow state holders, business logic coordination
Repository Layer → Single source of truth, abstracts DAO and DataStore access
Data Layer → Room DAOs, DataStore, ForegroundService + TrackingServiceManager
Key architectural decisions:
TrackingServiceManager is a Hilt @Singleton with its own CoroutineScope(SupervisorJob() + Dispatchers.IO), decoupled from ViewModel lifetime. This ensures the save operation completes even if the app process is backgrounded.SharedFlow(replay=0) — stale events are never replayed to new collectors.@ApplicationScope CoroutineScope is provided via Hilt for application-lifetime coroutines.app/src/main/java/com/example/progresstracker/
│
├── data/
│ ├── local/
│ │ ├── datastore/ # AppPreferencesDataStore
│ │ └── db/
│ │ ├── dao/ # DailyTaskDao, TaskDurationDao, GoalDao
│ │ ├── database/ # AppDatabase (Room), migrations
│ │ └── entity/ # DailyTaskEntity, TaskDurationEntity, GoalEntity
│ ├── mapper/ # ModelMappingExt (entity ↔ domain model)
│ └── repository/ # DailyTaskRepository, GoalRepository, DashboardRepository
│
├── di/ # Hilt modules: DatabaseModule, DataStoreModule, CoroutinesModule
│
├── model/ # Domain models: DailyTask, TaskDuration, Goal, Dashboard models
│
├── navigation/ # AppNavGraph, Screen sealed class, BottomBarDestination
│
├── service/
│ ├── TrackingForegroundService.kt
│ └── TrackingServiceManager.kt
│
├── ui/
│ ├── components/ # Shared composables (GoalBadge)
│ ├── dailyTask/
│ │ ├── DailyTaskMainScreen.kt
│ │ ├── tasksList/ # TasksListScreen, TasksListViewModel
│ │ └── taskDuration/ # TaskDurationScreen, TaskDurationViewModel
│ ├── dashboard/
│ │ ├── DashboardScreen.kt
│ │ ├── DashboardViewModel.kt
│ │ └── charts/ # BarChart.kt, LineChart.kt
│ ├── gaols/ # GoalsListScreen, GoalsListViewModel
│ ├── goalcreation/ # CreateEditGoalScreen, CreateEditGoalViewModel
│ ├── settings/ # AppearanceSettingsScreen, AppPreferencesViewModel
│ ├── taskcreation/ # CreateEditTaskScreen, CreateEditTaskViewModel
│ └── theme/ # AppTheme, Color.kt (5 full M3 color schemes), Type.kt
│
├── utils/ # DateTimeUtils (formatting, Islamic calendar, epoch math)
│
├── MainActivity.kt
└── ProgressTrackerApp.kt # @HiltAndroidApp entry point
git clone https://github.com/yourusername/ProgressTracker.git
cd ProgressTracker
Open in Android Studio, sync Gradle, and run on a device or emulator running Android 8.0+.
The app requests POST_NOTIFICATIONS at runtime on Android 13+ (required for the foreground service tracking notification).
daily_tasks
id (PK), title, description, remarks, satisfyPercentage, englishDate
task_durations
id (PK), dailyTaskId (FK → daily_tasks.id CASCADE DELETE),
startTime, endTime, durationTime, dateEpoch
goals
id (PK), createdAt, title, description, isCompleted,
expectedCompletionDate, completionDate,
difficultyLevel, importanceLevel, urgencyLevel
Current schema version: 2. Migration from v1 → v2 adds the dateEpoch column to task_durations.
Pull requests are welcome. For major changes please open an issue first to discuss what you would like to change.
git checkout -b feature/your-feature)git commit -m 'Add some feature')git push origin feature/your-feature)MIT License
Copyright (c) 2025 [Muhammad Shoaib Khalid]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Selected from shared topics, language and repository description—not editorial ratings.
Razeeman /
Simple app that tracks time.
trynoice /
The Android app for Noice.
joelkanyi /
A Kotlin Multiplatform app that helps users enhance their productivity and time management skills through focused work intervals and short breaks.
ParaskP7 /
All those Android development sources that you need to be and stay awesome!
DanielRendox /
An Android planner calendar app and a habit tracker that aims to simplify scheduling consistent activities and tracking your progress.
finnmglas /
:rocket: A distraction-free minimal homescreen for Android. The original, built by Finn Glas