/bewcloud-desktop

Desktop Sync client for bewCloud built with Rust using Tauri. 😎 ♾️

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

bewCloud Desktop Sync

This is the Desktop Sync client for bewCloud. It is built with Tauri and relies on rclone, which relies on rsync.

Usernames, passwords, and sync is all handled by rclone. The connection to a bewCloud instance happens via HTTP and a remote via WebDav is created in rclone.

The app runs rclone bisync every five minutes, or when it's forced to do so.

If you're looking for the mobile app, it's at bewcloud-mobile.

Install

You need to have rclone installed in your computer, as the app makes a shell call to that command. If you already have configured remotes they won't show up (unless you manually edit the <AppDataDir>/config.json), but bewCloud will not affect them (new ones will be created and also shown by the app).

Note

If you use a password to encrypt the rclone config file, you need to have set RCLONE_CONFIG_PASS for your user, "globally".

Then, download the appropriate binary from the releases page for your OS and run it!

Alternatively, you can build from source!

Development

You need to have Tauri's dependencies installed.

Also, run rustup component add rustfmt so make format can also format the rust code.

$ make install # installs module dependendies
$ make start # runs the app
$ make format # formats the code
$ make test # runs tests

Build from source

Don't forget to check the development section above first!

Note

If you're releasing a new version, update it in src-tauri/tauri.conf.json, src-tauri/Cargo.toml, and package.json first.

$ make build # builds the app binaries!

TODOs:

  • Build binaries for Arch and RPM too (https://github.com/0-don/clippy/blob/master/.github/workflows/release.yml)
  • Create release with signed builds on tag push
  • Actually check and delete local directory's remote directories when they're removed
  • Actually delete local directory when a remote is removed (code is commented)
  • Implement directory watching (kind of complicated right now as notify or hotwatch get their watchers destroyed after Tauri's setup)