A lightweight desktop app for browsing and managing cloud storage buckets. Built with Tauri, Svelte 5, and Rust.
Think MongoDB Compass or DBeaver, but for cloud object storage.
Currently supports: Google Cloud Storage Planned: Amazon S3, Azure Blob Storage
gcloud CLI authenticated (gcloud auth application-default login) or a service account JSON key file# Clone the repo
git clone https://github.com/sanketpisat/buckit.git
cd buckit
# Install frontend dependencies
npm install
# Run in development mode (hot-reload)
npm run tauri dev
# Build optimized binary + installer
npm run tauri build
This produces:
.app bundle and .dmg in src-tauri/target/release/bundle/.msi and .exe installer.deb and .AppImagebuckit/
├── src/ # Svelte 5 frontend
│ ├── lib/
│ │ ├── components/ # ConnectionManager, Explorer, PreviewPanel
│ │ ├── api.ts # Tauri IPC wrappers
│ │ ├── state.svelte.ts # Reactive app state (Svelte 5 runes)
│ │ ├── types.ts # TypeScript types
│ │ └── utils.ts # Formatting helpers
│ ├── routes/ # SvelteKit pages
│ └── app.css # Tailwind v4 + theme
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── commands.rs # Tauri IPC command handlers
│ │ ├── provider.rs # GCS REST API client
│ │ ├── config.rs # Connection persistence
│ │ ├── models.rs # Shared data models
│ │ └── error.rs # Error types
│ ├── Cargo.toml
│ └── tauri.conf.json
└── package.json
| Layer | Technology |
|---|---|
| Desktop framework | Tauri v2 |
| Frontend | Svelte 5, SvelteKit, Tailwind CSS v4 |
| Backend | Rust |
| GCS communication | reqwest + gcp_auth (REST API) |
| Auth | Service Account JSON keys, Application Default Credentials |
The architecture is designed for multi-provider support:
src-tauri/src/s3_provider.rs mirroring GcsProvider's public methodsprovider field to ConnectionConfig ("gcs" | "s3")commands.rs