Skip to content
n4dh1xPublic

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

HUB Native

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.

Architecture

  • Shared/, iOS/, and macOS/ contain the SwiftUI application.
  • rust/storage/ owns SQLite persistence, validation, compound mutations, backups, and synchronization.
  • scripts/build-native-bridge.sh builds the Rust static library consumed by the Swift targets.
  • project.yml is 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.

Local configuration and privacy

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.

Requirements

  • 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

Build and test

make test
make build-macos
make build-ios

Generate the project without building it:

make generate

The first Rust build downloads its Cargo dependencies. Later builds reuse the local Cargo cache.

Run in an iOS Simulator

Start a simulator, then run:

xcrun simctl install booted "build/Build/Products/Debug-iphonesimulator/HUB Native.app"
xcrun simctl launch booted com.nadhi.hub.native

Install on a connected iPhone

Configure 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.

Optional cloud sync

See docs/cloud-sync-setup.md. SQLite remains the working database even when sync is enabled.

Contributing

See CONTRIBUTING.md. Security issues should follow SECURITY.md.

License

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.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages