An iOS app that helps you stay focused when using apps. Set a purpose, set a time limit, and JustFocusOn keeps you accountable through the Dynamic Island and Live Activities.
- Pick an app — Select which app you're about to use
- Set a time limit — Choose how long you need (1 min to 1 hour)
- Write your purpose — Why are you opening this app?
- Press Play — The selected app opens, and a Live Activity starts counting down
While you use the app, the Dynamic Island shows your purpose and remaining time — a constant reminder of why you're there and how long you have.
When time's up, you get a notification and JustFocusOn resets for your next session.
- Bar-style input — Compact setup with three fields: App, Time, Purpose
- Dynamic Island — Shows purpose text (adaptive font) and live countdown timer
- Live Activity — Lock screen banner with app name, purpose, and countdown
- System-managed timer — Countdown runs independently via iOS, never stops in background
- Auto-open app — Selected app launches automatically when session starts
- Session summary — View focus history filtered by Day, Week, Month, or All time
- Total focused time and session count
- Per-app breakdown with visual bars
- Individual session records with timestamps
- Notification on completion — Alerts you when time is up, even if you're in another app
- Auto-reset — Returns to setup screen when timer ends, ready for the next session
- iPhone with Dynamic Island (iPhone 14 Pro and later)
- iOS 16.2+
- Xcode 15+ with XcodeGen
# Install XcodeGen (if not installed)
brew install xcodegen
# Generate Xcode project
cd JustFocusOn
xcodegen generate
# Open in Xcode
open JustFocusOn.xcodeprojIn Xcode:
- Select your development team in Signing & Capabilities for both targets
- Select your iPhone as the run destination
- Press Cmd+R to build and run
JustFocusOn/
├── project.yml # XcodeGen config
├── Shared/
│ └── FocusSessionAttributes.swift # ActivityKit attributes
├── JustFocusOn/ # Main app
│ ├── App/JustFocusOnApp.swift # Entry point
│ ├── Models/
│ │ ├── FocusSession.swift # App item model + URL schemes
│ │ └── SessionStore.swift # Session history persistence
│ ├── ViewModels/
│ │ └── FocusSessionViewModel.swift # Session + Live Activity logic
│ └── Views/
│ ├── HomeView.swift # Setup bar + play/summary buttons
│ ├── AppPickerView.swift # App selection list
│ ├── ActiveSessionView.swift # Timer countdown view
│ └── SummaryView.swift # Session history report
├── JustFocusOnWidgets/ # Widget extension
│ ├── FocusLiveActivity.swift # Dynamic Island + Lock Screen UI
│ └── JustFocusOnWidgetsBundle.swift # Widget bundle entry
- Screen Time API integration — Block other apps during focus sessions (requires paid Apple Developer account with Family Controls capability)
- Custom app icons — Replace SF Symbols with real app icons in the picker
- Haptic feedback — Vibrate when session starts and ends
- Sound alerts — Play a sound when time is up
- Session categories — Tag sessions (Work, Social, Entertainment, etc.)
- Focus streaks — Track consecutive days of focused app usage
- Weekly report — Push notification with weekly focus summary
- Widget — Home screen widget showing today's focus stats
- iCloud sync — Sync session history across devices
- Shortcuts integration — Start focus sessions via Siri / Shortcuts app
- Customizable themes — Dark/light mode and accent color options
- Export data — Export session history as CSV
- App Store release — Publish to the App Store