Inspiration

  • Open Instagram for one message, lose 40 minutes to Reels
  • Existing blockers kill the whole app — you lose DMs too
  • Wanted a scalpel, not a hammer

What it does

  • Detects and blocks Reels/Shorts surfaces in real time
  • Rest of the app stays fully usable
  • No root, no VPN, minimal battery cost

How we built it

  • Kotlin + Jetpack Compose, native Android
  • AccessibilityService reads the view hierarchy, matches feeds by structure
  • Consent gate enforced in the nav graph; everything on-device

Challenges we ran into

  • Repeated Play rejections over AccessibilityService disclosure rules
  • Fixes were structural, not copy — full-screen disclosure before any prompt
  • Feed layouts change every release, so detection had to avoid brittle IDs

Accomplishments that we're proud of

  • Cleared Play review on one of Android's most policed permissions
  • Surgical blocking instead of all-or-nothing
  • Shipped a polished Compose app solo

What we learned

  • Compliance pressure made the product clearer, not just legal
  • Screen time is an interface problem, not a willpower problem
  • Store visibility matters as much as the code

What's next for Focus Shield

  • More surfaces: TikTok, Snapchat, Facebook Reels
  • Scheduled shields and softer friction modes
  • Time-reclaimed stats; paid tier for advanced controls, core stays free

Built With

Share this project:

Updates

Submission history