Disclosure: I'm the developer. This is my app.

Every screen-time app I tried had an "ignore for today" button. So I built one where ignoring your own limit costs money, and the money goes to an organisation you'd hate to fund. Pro-gun? It goes to Everytown. Anti-gun? The NRA. You pick whoever makes you wince.

Keep the goal and nothing happens. Miss it and the amount is owed, which you pay yourself through every.org. The app never holds money and takes no cut.

Goals can be:

  • Screen time: an app or a website under a daily limit, or a cap on how many times you open something.
  • Tasks: gym, an assignment, anything with a deadline, proved with a photo or your location.

The permissions, since this is where I'd be suspicious too:

  • Usage access: to read how long each app was in front. Android's own numbers.
  • Accessibility service: only needed for website goals. It reads which app is in front and the text of the browser's address bar. It performs no actions and doesn't block anything. While you're in an app with a goal, it shows a countdown notification and can put up Punish's own pause screen, which you can always continue past.

No blocking, and no wallet inside the app.

Android only for now, closed beta, iPhone in progress. Free to download, two goals at a time on the free tier. 17 languages.

Beta signup: punishapp.com

Happy to answer anything about how it measures or what it stores.

you are viewing a single comment's thread
view the rest of the comments
[–] [B] 1 point 3 days ago

Not on the concept, but on one of the features you listed: "a cap on how many times you open something" is harder than it looks on Android, and it's worth knowing before users start reporting wrong numbers.

If you're counting with UsageStatsManager.queryEvents, ACTIVITY_RESUMED fires more often than a person would call "opening the app". It fires again when you come back from a second activity inside the same app, and on configuration changes — rotation, theme switch, font size — because the activity is recreated. Counting raw resume events overcounts, and worst for exactly the apps people want to limit, since those tend to be multi-activity.

What holds up better is tracking foreground package transitions: only count when the newly resumed package differs from the previously resumed one, and debounce a few seconds so bouncing out to a notification and straight back doesn't register as a second open.

The other thing, if you haven't hit it yet: there is no supported way for a third-party app to actually block another app. Digital Wellbeing uses privileged APIs that aren't available to us. Everything else ends up on an AccessibilityService or a draw-over overlay, and both carry real costs — accessibility use is restricted on the Play Store and needs justification, and polling the foreground app aggressively shows up in battery stats, which is its own kind of uninstall.

  • source