Warning This project has been 100% vibe coded. Keep this in mind: best programming practices may not have been followed, and there may be dead code or unused code, as the codebase has never been thoroughly inspected.
An iOS digital wellness app that uses Apple's Screen Time API to create focused work and study environments through intelligent blocking of distracting applications.
KAIROS helps users be more present by combining physical triggers (QR codes and NFC tags) with digital app blocking. Create custom blocking profiles called "Guards" and control them through scannable "Triggers" placed in your environment.
- Custom configurations defining which apps or categories to block
- Multiple guards can be active simultaneously
- Temporary unlock system (Autolock) with configurable duration
- Physical QR codes or NFC tags that control guards
- Target Mode: Deactivates specific guards when scanned
- Swap Mode: Activates specific guards when scanned
- Perfect for offices, libraries, study spaces, etc.
- Time-limited app access (1-60 minutes)
- Visual countdown via Live Activities
- Automatic background reactivation when time expires
- Safety mechanism for critical situations
- Hold for 90 seconds to deactivate all guards
- iOS 26.0+
- Xcode 26.0+
- Apple Developer account (for Screen Time entitlements)
# Fork this repository on GitHub, then:
git clone https://github.com/YOUR_USERNAME/kairos.git
cd kairosBefore building, you must update the bundle identifiers to match your Apple Developer account:
- Open
Soul.xcodeprojin Xcode - Select the project in the navigator
- For each target (Soul, SoulActivityMonitor, SoulWidget, SoulShieldConfiguration, SoulShieldAction):
- Go to Signing & Capabilities
- Change Team to your Apple Developer Team
- Update Bundle Identifier to your own (e.g.,
com.yourname.kairos)
The app uses an App Group for sharing data between the main app and extensions. You need to update this:
-
For each target, go to Signing & Capabilities → App Groups
-
Remove the existing app group
-
Add your own app group (e.g.,
group.com.yourname.kairos) -
Search and replace in the codebase:
Find: group.me.inakitajes.soul Replace: group.com.yourname.kairosFiles that reference the app group:
Soul/Managers/ShieldManager.swiftSoul/Managers/TriggerManager.swiftSoulWidget/SoulWidget.swiftSoulActivityMonitor/SoulActivityMonitor.swift- Various other Swift files
Search and replace the background task identifier:
Find: me.inakitajes.soul.applyshields
Replace: com.yourname.kairos.applyshields
Update in:
Soul/Info.plistSoul/Managers/ShieldManager.swift
- Select your target device or simulator
- Build and run (⌘R)
- Grant Screen Time permissions when prompted
Soul/
├── Views/ # SwiftUI views
│ ├── ContentView.swift # Main screen
│ ├── SettingsView.swift # Settings
│ ├── BlockingModesView.swift # Guard management
│ ├── ModeEditorView.swift # Guard editor
│ ├── TriggersView.swift # Trigger management
│ └── TriggerEditorView.swift # Trigger editor
├── Managers/
│ ├── ShieldManager.swift # Core blocking logic
│ └── TriggerManager.swift # QR/NFC trigger handling
├── Models/
│ ├── BlockingMode.swift # Guard data model
│ └── Trigger.swift # Trigger data model
└── Extensions/
SoulActivityMonitor/ # DeviceActivity extension
SoulWidget/ # Widget extension
SoulShieldConfiguration/ # Shield UI extension
SoulShieldAction/ # Shield action extension
- ShieldManager: Central singleton managing all blocking functionality, autolock timers, Live Activities, and background processing
- TriggerManager: Manages QR codes and NFC tags, handles trigger persistence and lookup
The app uses Apple's Screen Time frameworks:
FamilyControls- App selection and authorizationManagedSettings- Applying app restrictionsDeviceActivity- Background monitoring
Uses App Groups for sharing data between the main app and extensions via UserDefaults.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- No automated test suite currently exists - testing is done manually
- Uses
@StateObjectand@EnvironmentObjectfor state management
- Ensure Screen Time is enabled in iOS Settings
- The app requires the device owner to grant Screen Time access
- Verify you've created the App Group in your Apple Developer account
- Ensure all targets have the same App Group configured
- Make sure your Apple Developer account has the necessary entitlements
- FamilyControls requires specific entitlements from Apple
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Apple's Screen Time API
- Inspired by the need for intentional technology use
"The right time to do the right things" - KAIROS Philosophy