Case study

warp

SvelteRustTauri

Overview

A Windows app for moving and syncing files fast. It puts a clean interface on robocopy, with live speed, progress, a queue, verification, and presets.

Problem

Copying files on Windows is awkward. The built-in dialogs give you no real feedback, and robocopy, the fast, reliable option, asks you to memorize a pile of flags. Nobody had built a modern GUI that shows live progress and speed, keeps a queue, and saves presets for people who do this often.

Approach

I wrapped robocopy in a Tauri 2 app with a small Svelte 5 interface. It first does a dry run to measure the total size, then runs the real transfer and reads robocopy's output line by line to show progress as it happens. The Rust side stays deliberately thin, robocopy does the heavy lifting.

Architecture

Single Svelte 5 component (~1467 lines) communicates with a 715-line Rust backend via Tauri events. Backend spawns robocopy as a child process, parses stdout line-by-line, and emits warp-progress events every ~400ms for speed tracking. Cancellation stores the child handle in a Mutex for kill+wait. Presets and recent transfers persist in localStorage.

Challenges

Robocopy prints progress in English, so the parser breaks on localized Windows. A steady speed reading needed a 400ms rolling window. Cross-drive moves copy-then-delete, so I warn users that cancelling mid-way can leave partial files behind. Throttle mode disables multithreading to keep speed caps honest. The installer ends up around 10 MB, versus ~150 MB for an Electron build.

Results

A desktop app under 10 MB that replaces manual robocopy commands and clunky dialogs: live speed and ETA, a queue, verify mode, and presets, all running on Windows' own file engine.

Technology

Svelte 5RustTauri 2TypeScriptTailwind CSS v4Vite 6

Support Warp (vote)

warpon App Builders PH
Email copied