A native Android application designed to help users reduce screen time and promote healthier digital habits through data visualization, behavioral insights, and gamification.
LibreFocus is a work-in-progress Android screen time management app built with modern Android development practices. The app tracks app usage patterns and provides users with actionable insights to build better digital habits.
- Usage Analytics - Daily, weekly, and monthly statistics with interactive charts
- Real-time Tracking - Background sync of app usage data every 15 minutes
- Customizable Insights - Multiple metrics (usage time, app launches, device unlocks)
- Date & Time Preferences - User-configurable formatting with timezone support
- Material You - Dynamic theming with system color integration
- Onboarding Flow - Smooth user introduction and permission management
- App categorization with auto-classification
- Focus mode and app blocking
- Gamification (badges, streaks, achievements)
- AI-driven personalized recommendations
- Backup & restore functionality
Architecture & Design
- MVVM (Model-View-ViewModel) Pattern
- Jetpack Compose for declarative UI
- Material 3 Design System
Core Libraries
- Koin - Dependency injection
- Room - Local database with DAO pattern
- DataStore - Preferences management
- WorkManager - Background task scheduling
- Kotlin Coroutines & Flow - Reactive asynchronous programming
Planned
- Ktor - HTTP client for cloud sync
- Accessibility Service - App blocking implementation
com/librefocus/
├── data/ # Data layer (Room, DataStore, repositories)
├── di/ # Dependency injection modules
├── models/ # Data models
├── ui/ # UI layer (Compose screens & ViewModels)
├── utils/ # Utility classes
├── workers/ # Background workers
└── services/ # Foreground services
- Android Studio Hedgehog or later
- JDK 17+
- Android SDK 24+ (Minimum) / 34+ (Target)
- Clone the repository
git clone https://github.com/hammadbawara/librefocus.git
- Open the project in Android Studio
- Sync Gradle dependencies
- Run on an emulator or physical device
- Usage Access Permission - To track app usage statistics
- Notification Permission - For background sync notifications (Android 13+)
The app uses Room database with the following entities:
AppEntity- Installed application metadataAppCategoryEntity- App categories (predefined & custom)HourlyAppUsageEntity- Hourly usage aggregationDailyDeviceUsageEntity- Daily unlock countsSyncMetadataEntity- Incremental sync tracking
This project is currently in active development. Contributions, issues, and feature requests are welcome!
This project is licensed under the MIT License - see the LICENSE file for details.
Your Name
- GitHub: @hammadbawara
- LinkedIn: Your Profile
Status: 🚧 Work in Progress | Last Updated: December 2025

