A minimalist productivity timer that uses behavioral psychology principles to help maintain focus.
- Variable Ratio Reinforcement: Random alert sounds between 3-5 minutes create stronger engagement
- BRAC Cycles: 90-minute work sessions followed by 20-minute breaks align with natural human ultradian rhythms
- Attention Reset: Alert sounds help users regain focus when distracted
- Simple Interface: Just Start and Reset buttons - no complex settings
- Click Start to begin a focus session
- The app will:
- Play random alert tones every 3-5 minutes (with 10s reminder)
- After 90 minutes, automatically start a 20-minute break
- Click Reset at any time to stop the current session
This app implements three key psychological concepts:
-
Variable Ratio Reinforcement (VBR):
- Random timing (3-5 minutes) creates stronger engagement than fixed intervals
- Mimics effective behavioral conditioning techniques
-
Basic Rest-Activity Cycle (BRAC):
- 90-minute work / 20-minute rest periods
- Aligns with natural human ultradian rhythms
- Optimizes cognitive performance throughout the day
-
Attention Reset (Replay):
- Alert sounds help regain focus when distracted
- Provides gentle reminders to return to task
- Enhanced focus and concentration through timely reminders
- Prevention of mental fatigue via structured breaks
- Improved memory and attention through focus/break cycles
- Increased productivity by working with natural energy rhythms
- Reduced decision fatigue with automatic session management
- macOS 12.0 or later
- Xcode 14+ (for development)
- Clone this repository
- Open
Focus.xcodeprojin Xcode - Build and run the project
To create a distributable Focus.app bundle:
- In Xcode, select Product > Archive
- Wait for the archive to complete
- In the Organizer window, select your archive
- Click "Distribute App"
- Choose "Copy App" as the distribution method
- Select a destination folder
- The Focus.app bundle will be created in your chosen location
To change the alert sounds:
- Replace sound files in
Assets.xcassets - Update references in
ContentView.swift