MCPcopy Index your code
hub / github.com/TimsPizza/SwiftPan

github.com/TimsPizza/SwiftPan @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
561 symbols 1,351 edges 88 files 8 documented · 1%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SwiftPan — Make the best use of Cloudflare R2

Fast, private, cross‑platform file manager powered by Cloudflare R2.

License: MIT CI   Release   Apple Silicon

Languages: English | 简体中文


Available on

Desktop — Files Desktop Mobile — File List Mobile — Sidebar & Theme Android

Supported: Windows / macOS (x86 WIP) / Linux; Android; iOS (WIP)


What is SwiftPan

SwiftPan is a cross‑platform file manager for Cloudflare R2 (Desktop and Android). It provides fast browsing and search, batch download/delete/share, resumable transfers with pause/resume, and one‑click time‑limited share links. A built‑in Usage & Cost panel shows monthly upload/download/storage trends and cost estimates. Your credentials never leave your device; the app has no cloud backend.

What is Cloudflare R2

Cloudflare R2 is an S3‑compatible object storage service. It offers high performance, zero egress fees, and a generous free tier (storage up to 10 GB), making it an ideal personal cloud drive backend.

Features

Transfers & Management

  • Batch operations: download, delete, and share.
  • Robust transfers: pause/resume/cancel with resume support.

Files & Sharing

  • File browser: search, filter, sort, paginate.
  • Share links: single or bulk, time‑limited.

Usage & Cost

  • Monthly trends for upload/download/storage.
  • Cost estimates including free tier status.

UI/UX

  • Dark mode and mobile‑friendly layouts.

Note: Share links are publicly accessible. Use short expirations and be mindful of possible costs.


Install

Prebuilt binaries (recommended)

  • Grab installers from Releases: Windows / macOS / Linux, plus Android APK/AAB.

Build from source (optional)

With Tauri and Node set up: pnpm install && pnpm build && pnpm tauri build.


Get started

  1. In Settings, enter your R2 endpoint and credentials (Bucket, etc.).
  2. Click “Test connection”.
  3. Upload from the Files page.
  4. Pick a download location when saving; create share links when needed.

Need help setting up R2? See: Set up Cloudflare R2


Privacy & Security

  • Credentials are stored locally, encrypted with device keys (never uploaded).
  • No cloud backend, no telemetry; only talks to your configured R2.
  • Share links are public; use short expirations and watch costs.

FAQ

Q: R2 only? Primarily R2. Other S3‑compatible services may work but are untested.

Q: Connection fails? Check credentials, network, and your bucket CORS.

Q: Is my data safe? Credentials stay local and encrypted; nothing is collected.


Roadmap

  • Optional thumbnail generation on upload.
  • More platforms and UX polish (macOS x86, iOS).
  • Mobile performance improvements.
  • Align Android folder picker with desktop (depends on Tauri plugin).

Build & Contribute

Contributions welcome via Issues and PRs.


License

MIT License — see LICENSE.

Extension points exported contracts — how you extend this code

GlobalErrorProps (Interface)
(no doc)
src/components/fallback/GlobalError.tsx
TransferItem (Interface)
(no doc)
src/store/transfer-store.ts
UseFileBatchActionReturn (Interface)
(no doc)
src/hooks/use-file-batch-action.ts
ErrorDisplayProps (Interface)
(no doc)
src/components/fallback/ErrorDisplay.tsx
StoreState (Interface)
(no doc)
src/store/transfer-store.ts
LoadingSpinnerProps (Interface)
(no doc)
src/components/fallback/LoadingSpinner.tsx
AppSettingsState (Interface)
(no doc)
src/store/app-store.ts
FileItemPopOverMenuProps (Interface)
(no doc)
src/components/features/FilePopovers.tsx

Core symbols most depended-on inside this repo

cn
called by 73
src/lib/utils/index.ts
now_ms
called by 47
src-tauri/src/download/mod.rs
invokeBridge
called by 43
src/lib/api/tauriBridge.ts
info
called by 42
src-tauri/src/logger.rs
err_invalid
called by 36
src-tauri/src/types.rs
now_ms
called by 28
src-tauri/src/upload/mod.rs
emit_upload
called by 27
src-tauri/src/upload/mod.rs
transition_upload
called by 27
src-tauri/src/upload/mod.rs

Shape

Function 430
Class 55
Method 44
Interface 20
Enum 12

Languages

Rust55%
TypeScript43%
Kotlin1%

Modules by API surface

src-tauri/src/bridge.rs51 symbols
src-tauri/src/download/mod.rs40 symbols
src-tauri/src/sp_backend/mod.rs35 symbols
src-tauri/src/upload/mod.rs24 symbols
src-tauri/src/transfer_db.rs22 symbols
src-tauri/src/logger.rs22 symbols
src-tauri/src/usage/mod.rs21 symbols
scripts/release.mjs19 symbols
src/components/EventBridge.tsx18 symbols
src/components/ui/dropdown-menu.tsx15 symbols
src-tauri/src/types.rs15 symbols
src-tauri/src/transfer_fsm.rs15 symbols

For agents

$ claude mcp add SwiftPan \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact