10x is a focused daily goal app for iOS. It enforces three daily focuses tied to up to three active goals, tracks streaks with a “pending today doesn’t break” rule, and ships a widget that reads a small App Group snapshot instead of SwiftData directly.
- Xcode 15+
- iOS 17+ (SwiftData)
App/— iOS app (SwiftUI + SwiftData)Widgets/— widget extensionShared/— shared Swift package (deep links, widget snapshot)Tests/— unit testsUITests/— UI tests
- Create the App Group in the Apple Developer portal.
- Enable the App Group for both the app and widget targets.
- Update
SharedConstants.appGroupIDif you use a different identifier. - Add the URL scheme
tenxwith hostshome,setup,goals,settingsin the app target.
# Install tools and generate project
make setup
# Open in Xcode
make openmake setup # Install XcodeGen, SwiftLint, SwiftFormat
make generate # Regenerate Xcode project
make build # Build for iOS Simulator
make test # Run unit tests
make lint # Run SwiftLint
make format # Auto-format code
make format-check # Check formatting without changes
make clean # Clean build artifacts
make ci # Run full CI checks locally
make install-hooks # Install pre-commit hook- SwiftLint: Static analysis (
.swiftlint.yml) - SwiftFormat: Code formatting (
.swiftformat) - Pre-commit hook: Run
make install-hooksto lint before each commit
GitHub Actions runs on every push/PR:
- SwiftLint (strict mode)
- SwiftFormat check
- Build app + widgets
- Run tests
- Widgets read
widget_snapshot.jsonfrom the App Group container. - Streaks do not break if today exists but has zero completed focuses.
- Notifications are local-only and silent by spec.
See LICENSE.