equalitie / ouisync-app

GNU General Public License v3.0
78 stars 9 forks source link


CI License: GPL v3 Android Windows


Ouisync is a free and open source tool enabling peer-to-peer file syncing and sharing between devices. With or without the internet. For more information, please visit the project's home page at https://ouisync.net.

This repository implements the GUI for the Ouisync library.

Currently supported operating systems are Android, Windows and Linux.

Git clone

This repository uses git submodules. As such, use the following commands to clone it locally:

git clone https://github.com/equalitie/ouisync-app
git submodule update --init --recursive

Compilation

You'll need Flutter, Rust and other dependencies corresponding to the target platform:

Then to build the app:

flutter pub get
flutter <build|run> -d <windows|android|linux>

Running tests

On Linux:

# Build Ouisync library
cargo build -p ouisync-ffi --manifest-path=ouisync/Cargo.toml
# Run tests
OUISYNC_LIB=ouisync/target/debug/libouisync_ffi.so flutter test

On Windows

rem Build Ouisync library
cargo build -p ouisync-ffi --manifest-path=ouisync/Cargo.toml
rem Set environment variable to point to ouisync_ffi.dll
set OUISYNC_LIB=ouisync/target/debug/ouisync_ffi.dll
rem Run tests
flutter test

Some info on debugging tests can be found in test/README.md.

Docker

We have Dockerfiles for Linux and Windows which contain the development environment although at time of writing they are somewhat outdated (TODO).

Localization

We use the package intl_utils for handling the localization of the strings used in the app.

To add/modify a localized string, modify the English .arb file, and run the following to generate the dart code.

dart run intl_utils:generate

Testing

This project is tested with BrowserStack.

Sentry (optional)

Ouisync integrates Sentry, via the sentry_flutter plugin.

For initialization, you need to get a client key, called DSN, from a Sentry instance, making it available via an .env file, or as a environment variable using export, and then using envied

Please follow the instructions in the package repository for envied in GitHub to add a key called DSN, that contains the client key.

App suffix

To install multiple versions of the app on the same device (e.g., one production and one development), you can differentiate them with the "app suffix". This can be done either with the APP_SUFFIX environment variable during build, or with the app.suffix property in android/local.properties (if both are specified, the env var takes priority).