HUB Native is a local-first personal dashboard for iPhone, iPad, and Mac. It is built with SwiftUI and a shared Rust domain layer backed by SQLite.
The app combines calendar events, tasks and subtasks, accounts, transactions, budgets, recurring entries, and signed borrow/lend tracking. Data remains usable offline. Optional integrations provide Gemini timetable extraction and private cross-device synchronization through a Supabase project controlled by the user.
Shared/,iOS/, andmacOS/contain the SwiftUI application.rust/storage/owns SQLite persistence, validation, compound mutations, backups, and synchronization.scripts/build-native-bridge.shbuilds the Rust static library consumed by the Swift targets.project.ymlis the XcodeGen source of truth. The generated Xcode project is intentionally not committed.
The app stores its database as hub-native.sqlite3 in its application-support
container. Supabase session tokens are stored in Apple Keychain.
No API key or .env file is required to build or use the app offline. The app
does not load environment files. Configure optional integrations in Settings;
.env.example documents this boundary without embedding secrets.
Never add credentials to project.yml or compile them into the application.
Gemini keys are stored in local SQLite settings. Newly created manual SQLite backups and readable JSON exports omit the Gemini key. Automatic recovery backups retain it; older manual backups may also contain it. All backups and exports contain personal data and must stay private. Restoring a new manual backup requires re-entering the Gemini key.
- macOS with a current full Xcode installation
- Xcode command-line tools
- XcodeGen
- Rust stable through rustup, including the Apple targets declared in
rust-toolchain.toml
make test
make build-macos
make build-iosGenerate the project without building it:
make generateThe first Rust build downloads its Cargo dependencies. Later builds reuse the local Cargo cache.
Start a simulator, then run:
xcrun simctl install booted "build/Build/Products/Debug-iphonesimulator/HUB Native.app"
xcrun simctl launch booted com.nadhi.hub.nativeConfigure your Apple development team and, if necessary, a unique bundle
identifier in project.yml. Regenerate the project, then build and install:
xcodebuild \
-project HUBNative.xcodeproj \
-scheme HUBNative-iOS \
-configuration Debug \
-derivedDataPath build \
-sdk iphoneos \
-destination 'generic/platform=iOS' \
-allowProvisioningUpdates \
build
xcrun devicectl device install app \
--device "<device-name-or-identifier>" \
"build/Build/Products/Debug-iphoneos/HUB Native.app"The device must be unlocked, trusted by the Mac, and enabled for Developer Mode.
See docs/cloud-sync-setup.md. SQLite remains the
working database even when sync is enabled.
See CONTRIBUTING.md. Security issues should follow
SECURITY.md.
Original code and assets are licensed under MIT. Dependency license texts are included in THIRD_PARTY_NOTICES.md and bundled with both apps. The interface uses Apple's native SwiftUI materials.
Before publishing, follow the release checklist.