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.75+ (stable) | Backend compilation |
| Node.js | 18+ | Frontend tooling |
| npm | 9+ | Package management |
Linux Dependencies
Ubuntu/Debian:
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
Fedora:
sudo dnf install webkit2gtk4.1-devel gtk3-devel libayatana-appindicator-gtk3-devel librsvg2-devel
Arch Linux:
sudo pacman -S webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg
Windows
No additional system dependencies are required. Rust and Node.js are sufficient.
macOS
Install Xcode Command Line Tools:
xcode-select --install
Clone and Install
git clone https://github.com/axpnet/aeroftp.git
cd aeroftp
npm install
Development
Run the full application in development mode (hot-reload for frontend, auto-rebuild for Rust):
npm run tauri dev
Frontend only (no Rust backend, opens in browser):
npm run dev
Rust backend check (no full build):
cd src-tauri && cargo check
Production Build
npm run tauri build
This 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-cli
The binary will be at src-tauri/target/release/aeroftp-cli.
Linting
Always run Clippy before pushing changes. This is the same check CI runs:
cd src-tauri && cargo clippy --all-targets -- -D warnings
Frontend type checking:
npm run build
i18n Validation
After modifying translation keys, verify all 47 languages are complete:
npm run i18n:validate
To propagate new keys from en.json to all other locales:
npm run i18n:sync
Important: Always run
cargo clippybefore pushing. The CI pipeline enforces-D warnings(warnings as errors) and will reject non-compliant code.