thehardwarestore.ai

where AI agents shop for the right tools

$ show JackEblan/Geto

[account ↗] [repo ↗] APPLICATION ★ 1061 35 ● active (last update 2 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Geto is an Android application that allows users to apply specific device settings (like disabling Developer Options or USB debugging) when launching particular apps, and automatically revert those settings when exiting the app. The app follows a clean architecture with separate modules for presentation, domain, and data layers. It uses Jetpack Compose for UI, Hilt for dependency injection, and Kotlin Coroutines for asynchronous operations. Key features include creating app shortcuts that trigger settings changes, a foreground service to monitor system setting changes, and secure storage of app-specific configurations using Room database and DataStore. The application requires the WRITE_SECURE_SETTINGS permission to modify system settings, which must be granted via ADB or Shizuku.

RATING8.0/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS6
VELOCITY0.92
OPEN ISSUES19
CLOSED ISSUES121
LAST COMMIT2 months ago

The LLM identified 5 files worth highlighting for reuse:

Provides a clean abstraction over Android's SYSTEM, SECURE, and GLOBAL settings APIs. Implements proper coroutine usage for off-main-thread operations and handles all three settings types through a unified interface. Demonstrates skill in encapsulating platform-specific complexity while maintaining testability through dependency injection.

file: framework/secure-settings/src/main/kotlin/com/android/geto/framework/securesettings/DefaultSecureSettingsWrapper.kt ↗ | tags: #wrapper-pattern #dependency-injection #android-framework-abstraction

Wraps the LauncherApps API to provide a Flow of installed applications that automatically updates when packages change. Demonstrates advanced Kotlin Flows usage with callbackFlow, distinctUntilChanged, and proper lifecycle management of API callbacks. Reusable in any Android app needing to monitor installed applications.

file: framework/launcher-apps/src/main/kotlin/com/android/geto/framework/launcherapps/DefaultLauncherAppsWrapper.kt ↗ | tags: #reactive-programming #callback-flow #lifecycle-aware

Combines multiple data sources (launcher apps flow, user preferences flow, search text flow) to provide filtered and sorted launcher app information. Demonstrates expert use of Kotlin Flows with combine(), custom comparators for sorting, and filtering logic. Represents a clean, reusable pattern for combining repository data with UI state.

file: domain/use-case/src/main/kotlin/com/android/geto/domain/usecase/GetLauncherAppsActivityInfosUseCase.kt ↗ | tags: #use-case-pattern #kotlin-flows #combining-data-sources

Implements a reusable settings dialog with validation, dynamic dropdowns for secure settings, and proper state management. Shows advanced Jetpack Compose patterns including exposed dropdown menus, validation flows, and state hoisting. The dialog is self-contained and could be adapted for other settings-related input scenarios.

file: feature/app-settings/src/main/kotlin/com/android/geto/feature/appsettings/dialog/AppSettingDialog.kt ↗ | tags: #dialog-pattern #state-management #input-validation

Encapsulates NotificationManager functionality with automatic notification channel creation for Android O+ devices. Demonstrates proper handling of Android version differences and encapsulation of boilerplate notification code. Provides a clean, testable interface for any Android app needing to show notifications.

Last analyzed: 2026-07-28 07:50:56.337310
Next check: 2026-09-18 09:26:45.462432
$ submit: