Building from Source
AeroFTP is a Tauri 2 application with a Rust backend and React frontend. Both must be built together for a complete application, but can be developed independently.
Prerequisites
| Tool | Version | Purpose |
|---|---|---|
| Rust | 1.97.1 (repository toolchain) | Backend compilation, Clippy and rustfmt; manifest MSRV 1.93 |
| Node.js | 24 (CI baseline) | Frontend tooling |
| npm | 9+ | Package management |
Linux Dependencies
All Linux builds also need a C/C++ compiler toolchain, Perl, pkg-config and LLVM with the shared libclang library. Vendored OpenSSL uses Perl, and the whisper-rs-sys bindgen step needs libclang. Install these through your distribution's development packages before building; the platform-library commands below do not replace that common toolchain. If bindgen cannot find an installed libclang, set LIBCLANG_PATH to the directory containing its shared library.
Ubuntu/Debian:
sudo apt install build-essential pkg-config libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libfuse3-dev libacl1-dev patchelfFedora:
sudo dnf install webkit2gtk4.1-devel gtk3-devel libayatana-appindicator-gtk3-devel librsvg2-develArch Linux:
sudo pacman -S webkit2gtk-4.1 gtk3 libayatana-appindicator librsvgWindows
Install Microsoft C++ Build Tools with the Windows SDK and the MSVC toolchain, plus Microsoft Edge WebView2 Runtime. Rust and Node.js alone do not supply the native Windows build dependencies. Install Strawberry Perl and put perl on PATH for vendored OpenSSL. Install LLVM for the whisper-rs-sys bindgen step; if libclang is not found, set LIBCLANG_PATH to its bin directory, such as C:\Program Files\LLVM\bin.
macOS
Install Xcode Command Line Tools:
xcode-select --installClone and Install
git clone https://github.com/axpdev-lab/aeroftp.git
cd aeroftp
npm ciDevelopment
Run the full application in development mode (hot-reload for frontend, auto-rebuild for Rust):
npm run tauri devFrontend only (no Rust backend, opens in browser):
npm run devRust backend check (no full build):
cd src-tauri && cargo checkProduction Build
npm run tauri buildThis produces platform-specific packages in src-tauri/target/release/bundle/:
| Platform | Artifacts |
|---|---|
| Linux | .deb, .rpm, .AppImage |
| Windows | .msi, .exe |
| macOS | .dmg |
CLI Binary Only
To build just the CLI without the desktop application:
cd src-tauri
cargo build --release --bin aeroftp-cliThe binary will be at src-tauri/target/release/aeroftp-cli.
Linting
Run focused checks for the code you change. Required GitHub Actions CI is the authoritative full gate for a feature/fix PR. Clippy can be run locally when relevant:
cd src-tauri && cargo clippy --all-targets -- -D warningsFrontend type checking:
npm run typechecki18n Validation
After modifying translation keys, verify all 47 languages are complete:
npm run i18n:validateTo propagate new keys from en.json to all other locales:
npm run i18n:syncCI enforces warnings as errors. Direct pushes without checked PR CI, release work and documented CI gaps require the project's full applicable gate; see the repository's CONTRIBUTING.md.