Inspiration

Opening an app can happen before we have decided what we want from it. Nodd was built around that small moment: interrupt the reflex, make the pause useful, and give the person a chance to choose again.

The idea is simple: stretch before you scroll. A short, guided movement break creates a beginning and an end between the impulse to open an app and the decision to keep using it.

What it does

Choose the apps you want Nodd to intercept. When you open one, Nodd presents a pause screen and a short sequence of illustrated, timed neck and shoulder stretches. After the sequence, you can choose to keep the app blocked, or Open app to grant an app-specific session.

Sessions can be set to 5, 10, or 25 minutes per app, and count the time actually spent in that app. The pause screen also shows factual usage information. A deliberate press-and-hold bypass remains available on Android.

The stretch is guided, not camera-verified. There is no pose score, points system, or bank of earned minutes. Nodd shows the movement, times it, and trusts the user. The free plan supports two apps with the full stretch library; Pro adds unlimited apps.

How we built it

Nodd uses React Native, Expo, and TypeScript for the app experience, with local SQLite storage and animated stretch illustrations. Android app interception combines an Accessibility Service, an overlay, and system usage information. iOS version integrates Screen Time API. RevenueCat powers in-app purchases through react-native-purchases.

Challenges we ran into

An early direction used camera-based movement verification. It proved poorly suited to the situations where a phone habit often happens: low light, holding the phone in one hand, or lying down. The product evolved toward illustrated guidance and a timed pause, removing camera setup from the core experience.

Another important decision was separating completion from access. Finishing a stretch does not automatically unlock the distracting app. The prominent "Done" action supports stopping; continuing is a separate, deliberate choice.

The central lesson was that useful friction depends on clear choices and reliable behavior. The pause must work in ordinary conditions, and the person must remain in control.

Accomplishments that we're proud of

Nodd has shipped on both Google Play and Apple's App Store. The product brings app blocking, illustrated stretch guidance, timed sessions, and a deliberate completion choice into one flow. Finishing a stretch leaves room to stop: access to the distracting app is a separate action, not an automatic reward.

The implementation supports that experience through different native systems on Android and iOS, alongside a shared React Native interface. It also includes RevenueCat purchase and restore flows and a free tier that preserves the core stretch experience. Moving from the early camera-based direction to guided illustrations removed camera setup from the pause itself.

What we learned

Building for both platforms required adapting the interaction to each operating system. Android can expose usage information directly; iOS uses protected system reports and its own shielding flow. On iOS, a successful access grant also does not mean the app can automatically open the selected destination. Those differences belong in the product's behavior and wording, not just its native code.

Distribution is still an ongoing experiment for us. We’re testing short-form videos that connect everyday screen-time habits to Nodd’s stretch-before-scroll experience. We’re learning how to explain the idea clearly, but it’s too early to say which messages or channels consistently bring people to the app.

What's next for Nodd: Stretch Before Scroll

Keep refining the clarity and reliability of the app and distribution experiments.

Built With

Share this project:

Updates

Submission history