Skip to main content

Summary

This project is a comprehensive digital wellbeing application built entirely with Jetpack Compose and Kotlin. It leverages Android Accessibility Services and Usage Stats to track screen time, visualize data with custom canvas charts, and enforce user-defined usage limits through robust background services. The architecture follows a reactive, offline-first pattern using Room, Hilt, and WorkManager.

Statistics

Total Files

~140 Kotlin files

Features

12 major modules

Lines of Code

~18k lines (approx)

Features at a Glance

FeatureDescriptionKey Files
DashboardDaily summary & coach suggestionsTodaySummaryScreen, TodaySummaryViewModel
InsightsBehavioral analysis & treemapsInsightsScreen, NotificationTreemap
LimitsBlocking engine & managementLimitsScreen, BlockingActivity, LimitMonitor
DetailsApp specific & scroll physicsAppDetailScreen, ScrollDetailScreen
PostboxNotification batchingPostBoxActivity, NotificationListener
JourneysTimeline visualizationJourneysScreen, UserJourney

Project Structure

The app follows a pragmatic Clean Architecture approach, heavily relying on a “Sync and Store” data strategy.

File Organization

LayerPurposeKey Directories
UIScreens, Theme, Componentsui/screens/, ui/theme/, ui/components/
DataDB, API, Repositoriesdata/database/, data/repository/, data/api/
DIDependency Injectiondi/ (Modules, Scopes)
ServiceBackground Monitoringservice/ (ScrollTrack, AppTracker)
WorkerScheduled Tasksworker/ (Sync, Cleanup, Analysis)

Entry Points

Entry PointFilePurpose
App StartScrollTrackApplication.ktInitialize Hilt, Logging, and Notification Channels.
UI HostMainActivity.ktSets up the Compose NavHost and Theme.
MonitoringScrollTrackService.ktAccessibility Service entry point for usage tracking.
BlockingBlockingActivity.ktHigh-priority activity launched when limits are hit.

Key Technologies

  • UI: Jetpack Compose, Material 3, Canvas (Custom Charts)
  • Architecture: MVVM, Hilt (DI), Coroutines/Flow
  • Data: Room (SQLite), DataStore, Retrofit
  • Background: WorkManager, Foreground Services, BroadcastReceivers
  • System: Accessibility API, UsageStatsManager, NotificationListenerService
Last modified on January 25, 2026