The problem
Screen-time apps are easy to bypass. Ghoasted enforces lockdowns with rules tied to where you are, which network you're on, the time of day and how long you've already used an app.
What I built
- App groups and per-app rules that evaluate together: if any active rule says lock, the app is blocked.
- Location geofences (50, 100, 200 or 500 m) with a map picker, and Wi-Fi SSID gates.
- Time windows that cross midnight in one slot, and daily usage budgets from Android's usage events.
- A freeze lock on settings during a lockdown, one emergency grace per day, earned time from productive apps, and a redirect that opens a productive app instead.
How it works
- An accessibility service inspects the foreground app; an overlay activity blocks it.
- A foreground service keeps the engine alive; device-admin and boot receivers make it hard to remove.
- A pure LockEvaluator combines location, Wi-Fi, time and usage rules.
Stack
- KotlinGhoasted uses Kotlin
- Jetpack ComposeGhoasted uses Jetpack Compose
- RoomGhoasted uses Room
- HiltGhoasted uses Hilt
- Accessibility serviceGhoasted uses Accessibility service
- Device adminGhoasted uses Device admin