{"id":15067633,"url":"https://github.com/mateoradman/swift_file","last_synced_at":"2025-04-10T14:23:27.792Z","repository":{"id":154079698,"uuid":"628929293","full_name":"mateoradman/swift_file","owner":"mateoradman","description":"Share files between devices using your Wi-Fi network.","archived":false,"fork":false,"pushed_at":"2024-03-04T22:02:58.000Z","size":387,"stargazers_count":14,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T13:05:10.283Z","etag":null,"topics":["axum","cli","command-line-tool","file-sharing","file-transfer","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/swift_file","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mateoradman.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":"2023-04-17T09:17:11.000Z","updated_at":"2024-12-13T22:47:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"1e36dd28-cac2-4273-b3eb-1dce1453fd21","html_url":"https://github.com/mateoradman/swift_file","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateoradman%2Fswift_file","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateoradman%2Fswift_file/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateoradman%2Fswift_file/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateoradman%2Fswift_file/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mateoradman","download_url":"https://codeload.github.com/mateoradman/swift_file/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248233938,"owners_count":21069493,"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":["axum","cli","command-line-tool","file-sharing","file-transfer","rust"],"created_at":"2024-09-25T01:25:27.414Z","updated_at":"2025-04-10T14:23:27.785Z","avatar_url":"https://github.com/mateoradman.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# swift_file\n\nRust implementation of transferring files between devices over Wi-Fi network using a QR code.\nTool is inspired by [claudiodangelis/qrcp](https://github.com/claudiodangelis/qrcp).\n\n## How does it work?\n\n![](docs/demo-screenshot.png?raw=true)\n\nThe sf server is bound to the IP address of a default network interface of the machine the server is running on. Alternatively, the IP address (`--port`), particular network interface (`--interface`), and port (`--port`) can be selected by the user.\n\nThe QR code that is printed encodes a http URL which is typically of the following format:\n\n`http://{ip}:{port}/{download|receive}/[optional suffix]`\n\n## Known limitations\n\n- Some browsers on iOS are unable to download the file. It always works with Safari but fails with Brave. The failed download might also occur on other Chromium-based iOS browsers.\n\n## Safety\n\nThis crate uses `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% safe Rust.\n\n## Installation options\n\n### Install with cargo\n\n[swift_file](https://crates.io/crates/swift_file) is published on crates.io.\nIn order to install a Rust crate from crates.io, it is required to have [Rust and cargo installed](https://doc.rust-lang.org/cargo/getting-started/installation.html) on your system.\n\n```sh\ncargo install swift_file\n```\n\n### Manual installation from an archive\n\n[Latest release](https://github.com/mateoradman/swift_file/releases/latest) page provides an option to manually install the sf binary from an archive. The archive is available for Linux, MacOS, and Windows.\nDownload, extract and move the binary to the desired directory, and set execution permissions.\n\n#### Linux\n\n1. Download the Linux tar.gz archive from the latest [release](https://github.com/mateoradman/swift_file/releases/latest)\n2. Extract the archive\n\n```sh\ntar xf swift_file_*_x86_64-unknown-linux-musl.tar.gz\n```\n\n3. Move the binary\n\n```sh\nsudo mv sf /usr/local/bin\n```\n\n4. Set execution permissions\n\n```sh\nsudo chmod +x /usr/local/bin/sf\n```\n\n5. Run sf\n\n```sh\nsf --help\n```\n\n#### MacOS\n\n1. Download the MacOS (apple-darwin) ZIP archive from the latest [release](https://github.com/mateoradman/swift_file/releases/latest)\n2. Extract the archive\n\n```sh\nunzip swift_file_*_x86_64-apple-darwin.zip\n```\n\n3. Move the binary\n\n```sh\nsudo mv sf /usr/local/bin\n```\n\n4. Set execution permissions\n\n```sh\nsudo chmod +x /usr/local/bin/sf\n```\n\n5. Run sf\n\n```sh\nsf --help\n```\n\n#### Windows\n\n1. Download the Windows ZIP archive from the latest [release](https://github.com/mateoradman/swift_file/releases/latest)\n2. Extract the archive\n3. Run sf.exe\n\n## CLI Usage\n\n```\nSend or receive files between devices using Wi-Fi network\n\nUsage: sf [OPTIONS] \u003cCOMMAND\u003e\n\nCommands:\n  send     Send a file\n  receive  Receive a file\n  help     Print this message or the help of the given subcommand(s)\n\nOptions:\n      --ip \u003cIP\u003e                IP Address to bind to\n  -i, --interface \u003cINTERFACE\u003e  Network interface to use (ignored if --ip provided)\n  -p, --port \u003cPORT\u003e            Server port\n  -h, --help                   Print help\n  -V, --version                Print version\n```\n\n### Sending a file to another device\n\n```\nSend a file\n\nUsage: sf send [OPTIONS] \u003cFILE\u003e\n\nArguments:\n  \u003cFILE\u003e  File path to send\n\nOptions:\n      --ip \u003cIP\u003e                IP Address to bind to\n      --zip                    ZIP file or directory before transferring\n  -i, --interface \u003cINTERFACE\u003e  Network interface to use (ignored if --ip provided)\n  -p, --port \u003cPORT\u003e            Server port\n  -h, --help                   Print help\n```\n\n### Receiving files from another device\n\n```\nReceive files\n\nUsage: sf receive [OPTIONS]\n\nOptions:\n  -d, --dest-dir \u003cDEST_DIR\u003e    Destination directory\n      --ip \u003cIP\u003e                IP Address to bind to\n  -i, --interface \u003cINTERFACE\u003e  Network interface to use (ignored if --ip provided)\n      --no-open                Disable opening the received file automatically using the system default program\n  -p, --port \u003cPORT\u003e            Server port\n  -h, --help                   Print help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateoradman%2Fswift_file","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmateoradman%2Fswift_file","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateoradman%2Fswift_file/lists"}