{"id":19174598,"url":"https://github.com/equalitie/ouisync-app","last_synced_at":"2025-04-15T06:47:42.268Z","repository":{"id":37259403,"uuid":"313881406","full_name":"equalitie/ouisync-app","owner":"equalitie","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-14T13:33:48.000Z","size":11679,"stargazers_count":90,"open_issues_count":59,"forks_count":9,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-15T06:47:34.399Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/equalitie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-18T09:17:17.000Z","updated_at":"2025-04-07T11:12:04.000Z","dependencies_parsed_at":"2024-01-31T12:25:07.618Z","dependency_job_id":"b1123e0c-41a3-4cd6-8fb6-d7ddfc01cdbc","html_url":"https://github.com/equalitie/ouisync-app","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fouisync-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fouisync-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fouisync-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fouisync-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/equalitie","download_url":"https://codeload.github.com/equalitie/ouisync-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249023709,"owners_count":21199958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T10:18:27.125Z","updated_at":"2025-04-15T06:47:42.238Z","avatar_url":"https://github.com/equalitie.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"assets/OuisyncFull.png\"/\u003e\n\u003cbr/\u003e\n\n[![CI](https://github.com/equalitie/ouisync-app/actions/workflows/ci.yml/badge.svg)](https://github.com/equalitie/ouisync-app/actions/workflows/ci.yml)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n![Android](https://img.shields.io/badge/Android-3DDC84?style=flat-squarte\u0026logo=android\u0026logoColor=white)\n![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat-squarte\u0026logo=windows\u0026logoColor=white)\n\n\u003cbr/\u003e\nOuisync is a free and open source tool enabling peer-to-peer file syncing and\nsharing between devices. With or without the internet. For more information,\nplease visit the project's home page at https://ouisync.net.\n\nThis repository implements the GUI for the [Ouisync library](https://github.com/equalitie/ouisync).\n\nCurrently supported operating systems are Android, Windows and Linux.\n\n## Git clone\n\nThis repository uses git submodules. As such, use the following commands to clone it locally:\n\n```bash\ngit clone https://github.com/equalitie/ouisync-app\ngit submodule update --init --recursive\n```\n\n## Compilation\n\nYou'll need [Flutter](https://docs.flutter.dev/get-started/install), [Rust](https://www.rust-lang.org/tools/install) and other dependencies corresponding to the target platform:\n\n* Windows: [Dokan](https://github.com/dokan-dev/dokany/releases) (User mode file system)\n* Android: [SDK](https://developer.android.com/) and [NDK](https://developer.android.com/studio/projects/install-ndk)\n* Linux: `sudo apt-get install pkg-config libfuse-dev appindicator3-0.1 libsecret-1-dev`\n\nThen to build the app:\n\n```bash\nflutter pub get\nflutter \u003cbuild|run\u003e -d \u003cwindows|android|linux\u003e\n```\n\n## Running tests\n\nOn Linux:\n\n```bash\n# Build Ouisync library\ncargo build -p ouisync-ffi --manifest-path=ouisync/Cargo.toml\n# Run tests\nOUISYNC_LIB=ouisync/target/debug/libouisync_ffi.so flutter test\n```\n\nOn Windows\n\n```bat\nrem Build Ouisync library\ncargo build -p ouisync-ffi --manifest-path=ouisync/Cargo.toml\nrem Set environment variable to point to ouisync_ffi.dll\nset OUISYNC_LIB=ouisync/target/debug/ouisync_ffi.dll\nrem Run tests\nflutter test\n```\n\nSome info on debugging tests can be found in [test/README.md](./test/README.md).\n\n## Docker\n\nWe have *Dockerfiles* for\n[Linux](https://github.com/equalitie/ouisync-app/blob/master/docker/dev/linux/Dockerfile)\nand\n[Windows](https://github.com/equalitie/ouisync-app/blob/master/docker/dev/windows/Dockerfile)\nwhich contain the development environment although at time of writing they are\nsomewhat outdated (TODO).\n\n   - If your development platform is Linux, you can use the Dockerfile to\n     create the Linux desktop or the Android app.\n\n   - Similarly, you can use the Windows Dockerfile to create the Windows\n     desktop or the Android app.\n\n## Localization\n\nWe use the package [`intl_utils`](https://pub.dev/packages/intl_utils) for handling the localization of the strings used in the app.\n\nTo add/modify a localized string, modify the [English `.arb`\nfile](lib/l10n/intl_en.arb), and run the following to generate the dart code.\n\n```bash\ndart run intl_utils:generate\n```\n\n## Testing\n\nThis project is tested with [BrowserStack](https://www.browserstack.com/).\n\n## Sentry (optional)\n\nOuisync integrates Sentry, via the `sentry_flutter` plugin.\n\nFor 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](https://github.com/petercinibulk/envied)\n\nPlease follow the instructions in the package repository for [envied in GitHub](https://github.com/petercinibulk/envied#table-of-contents) to add a key called `DSN`, that contains the client key.\n\n## App suffix\n\nTo 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).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalitie%2Fouisync-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fequalitie%2Fouisync-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalitie%2Fouisync-app/lists"}