BuckIt Svelte Themes

Buckit

A lightweight desktop app for browsing and managing cloud storage buckets (GCS, S3). Built with Tauri, Svelte 5, and Rust.

BuckIt!

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

Features

  • Connection management - Save multiple GCS connections with Service Account keys or Application Default Credentials
  • Bucket browsing - Sidebar listing all buckets in a project, with a resizable panel
  • Object explorer - Table view with folder navigation, breadcrumbs, sorting
  • File preview - Inline preview for images, JSON (pretty-printed), CSV (as table), plain text, code files, and PDFs
  • Upload - Multi-file upload via native file picker
  • Download - Single files (save-as dialog) or entire folders recursively (directory picker)
  • Delete - Bulk delete for files and folders
  • Copy / Move - Copy or move objects within and across buckets
  • Dark mode - Automatic, follows OS preference

Prerequisites

  • Rust (1.75+)
  • Node.js (18+)
  • For GCS access: either gcloud CLI authenticated (gcloud auth application-default login) or a service account JSON key file

Getting Started

# 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

Building for Production

# Build optimized binary + installer
npm run tauri build

This produces:

  • macOS: .app bundle and .dmg in src-tauri/target/release/bundle/
  • Windows: .msi and .exe installer
  • Linux: .deb and .AppImage

Project Structure

buckit/
├── 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

Tech Stack

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

Adding S3 Support (Future)

The architecture is designed for multi-provider support:

  1. Create src-tauri/src/s3_provider.rs mirroring GcsProvider's public methods
  2. Add a provider field to ConnectionConfig ("gcs" | "s3")
  3. Dispatch to the correct provider in commands.rs
  4. Update the connection form with a provider selector

License

MIT

Top categories

Loading Svelte Themes