A cross-platform desktop tray app that monitors local folder sizes and submits storage statistics to freispace on a daily schedule.
- Runs silently in the system tray
- Walks configured local folders recursively and sums file sizes
- POSTs storage statistics to
https://api.freispace.com/v1/storages/{id}/projects/{id}/statistics/{date} - Retries failed submissions automatically (up to 10 attempts, every 5 minutes)
- Shows run status via five tray icon states: Idle, Active, OK, Warning, Error
- Streams a live event log to the UI with info/warning/error filtering
- Create an API key in freispace. Required permissions:
Projects:Update&Storages:Update - Paste it in the the freispace Storage Collector
- Update the list of Project Storages, select and, and select the folders to monitor
We are working on obtaining certificated and signing the Mac OS and Windows versions of the app. At the moment, both Windows and Mac OS might throw warnings when trying to launch the apps. On Mac OS, you might need to manually allow execution in the settings.
| Layer | Technologies |
|---|---|
| Frontend | Svelte 5 (runes), TypeScript, Tailwind CSS 4, Vite 6 |
| Backend | Rust, Tauri 2, SQLite (sqlx), tokio, reqwest |
| Scheduler | tokio-cron-scheduler |
| Distribution | GitHub Actions → native installers (Windows, macOS, Linux) |
- Rust (MSRV 1.77.2)
- Node.js ≥ 20
- pnpm
- Platform build deps per Tauri prerequisites
pnpm install
pnpm dev # full Tauri dev mode (frontend + backend)
pnpm dev:frontend # frontend only (Vite on port 1420)pnpm build # produces native installer in src-tauri/target/release/bundle/pnpm check # svelte-check (frontend TypeScript)
cd src-tauri && cargo clippy # Rust lintsAll settings are persisted in SQLite in the OS app data directory (com.freispace.storage-collector).
| Setting | Description |
|---|---|
| API Key | freispace API key for authentication |
| Schedule time | Daily run time (local timezone, default 17:55) |
| Auto-run | Enable/disable the daily scheduler |
| Folder configs | Mappings of (storage_id, project_id) → local folder path |
- Enter your freispace API key in the Settings tab
- The app fetches your available storages and projects from the API
- Map each storage project to a local folder path
- Set a daily schedule time and enable auto-run
- Use "Trigger All" to run a manual collection at any time
The app window hides to the tray on close. Right-click the tray icon to show the window or quit.
Four SQLite tables in 0001_initial.sql:
settings— key/value store (api_key, schedule, auto-run flag)folder_configs— storage/project/folder mappings with optional per-folder schedule overridepending_submissions— failed API calls queued for retrylog_entries— append-only audit log, pruned to 10,000 rows
GitHub Actions workflows in .github/workflows/:
ci.yml— type-check, Rust tests, Clippy on every pushrelease.yml— builds native installers for Windows, macOS, and Linux viatauri-apps/tauri-action

