The same bidirectional sync engine from UniDrive CLI — rebuilt for Android. SFTP prototype. Svelte Material 3 UI. Dark theme. Minimal permissions.
UniDrive Android shares the core, sync, and provider modules from the JVM unidrive codebase via
Gradle composite builds. The Android app provides only the Android-specific adaptation layer:
FileObserver instead of inotify, sidecar placeholder files instead of sparse files,
WorkManager instead of the daemon. The sync logic itself is identical.
Accounts, File Browser, Settings, Activity
Periodic & event-triggered sync
Preferences, config
.unidrive-placeholder sidecars
Local change detection
Gallery integration
3-phase bidirectional sync
Apache MINA SSHD
SQLite state tracking
Key or password authentication. Inline connection test before saving. Keys stored in app-private storage, not shared preferences.
Same 3-phase engine: Gather → Reconcile → Apply. Incremental delta via SFTP LIST.
Cloud-only files shown as 0-byte sidecar markers with JSON metadata. Real content downloaded on demand.
Downloaded photos and videos inserted into the Gallery via scoped storage APIs. No broad permissions needed.
Periodic 15-minute sync with network constraints. Debounced FileObserver triggers for immediate sync on local changes.
SSH keys in app-private storage. Password auth support wired. Android Keystore integration planned.
AMOLED-friendly dark theme. Material 3 design system. Indigo accent color throughout.
Accounts (home), Activity (sync log), Settings. File browser within account detail. No bottom-bar bloat.