Inspiration
Inspired by personal experiences and a desire to help other students with trouble focusing. Traditional focus apps take an all or nothing approach that either outright blocks users from entering distracting apps or penalizes them for doing so. This may work for some users, but for others it fails to rectify the issue at hand. We tried to address this problem with Nudge.
What it does
Nudge takes the standard focus app model a step further by facilitating the process of getting the user back on track and settled into work. It accomplishes this with a variety of features, including:
- Periodic check-ins when it detects that the user has drifted from their task for too long.
- Intelligent "https://jamesclear.com/how-to-stop-procrastinating" based notes that provide bite-sized next steps for settling back into a task.
- On-screen popups and indicators to help quickly get back into the rhythm of work, and
- Extensive voice control support in a variety of languages.
When a check-in is triggered, Nudge places a small pop-up on the users screen to ask them if they're still working. Users have the option to let Nudge take them back to their task, whitelist the app they're using, or snooze the session. Upon re-entering their task, Nudge will pin an easy next step for accomplishing their goal to help get the user back to work. These pins are placed intelligently to guide the user's attention back to the right part of the screen.
How we built it
Nudge is built primarily with React and Electron. React handles the majority of the business logic rendering: This accounts for more than 90% of the entire codebase. Electron packages the TypeScript code as a desktop application which enables some convenient features, like a native taskbar integration with MacOS and non-dependence on browser version. Architecturally, Nudge works as a collection of independent windows that handle I/O and communicate with the central main session. The main session has absolute control of state and can make api calls to the Gemini backend when necessary.
Challenges we ran into
- Strange audio artifacts occurring in the Gemini live speech generation.
- Managing overhead and timing issues related to communicating with the Gemini API after a user has started a session.
Accomplishments that we're proud of
- Designing a stable state machine that manages persisting between app runs and session toggles.
- Designing Nudge UI to be visible without being overly obtrusive or "nagging."
- Building a tool that intelligently adapts to user needs and habits.
- Reaching almost every stretch goal, including multiple themes and a mascot.
- Making an effective focus tool that we could share with the world.
What we learned
- Artificial Intelligence can be extremely powerful, but it should not be used as a catch-all solution for technical problems. Tasks that can be done efficiently without it should be implemented without it.
- Building a detailed plan made the development process much faster and easier. Giving up a few hours at the start of the event to prepare the plan likely saved much more time in bugs, headaches, and architectural issues.
What's next for Nudge
- Optimization of desktop app,
- Elevenlabs integration for custom voiceovers
- Support custom themes
- Modding framework
Log in or sign up for Devpost to join the conversation.