Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Zipper ⚡

Drop your chaos. Download your structure.

A zero-upload, privacy-first file organizer that runs entirely in your browser. Drop any number of files, get a perfectly structured ZIP. No server. No sign-up. No data ever leaves your device.


How It Works

Zipper uses a 3-layer hybrid classification engine to intelligently organize your files — all based on filenames only (file content is never read):

Layer Method Speed When Used
Layer 1 Pattern matching — hand-crafted rules for 18+ file categories (media, code, documents, etc.) ⚡ Instant Always runs first
Layer 2 TF-IDF vectorization + k-means clustering — groups files by filename similarity 🔄 Fast Files not caught by Layer 1
Layer 3 Local AI embeddings via all-MiniLM-L6-v2 (WebAssembly) — semantic understanding of filenames 🧠 ~23MB model Opt-in only, for remaining uncategorized files

After classification, you can edit the folder tree (rename folders, drag files between folders), then download the organized result as a single ZIP.


Tech Stack

Technology Purpose
Next.js 14 (App Router) Framework
TypeScript (strict mode) Type safety
Tailwind CSS v3 Styling
Zustand Client-side state management
ml-kmeans K-means clustering (Layer 2)
@xenova/transformers In-browser AI embeddings (Layer 3, opt-in)
JSZip ZIP file generation
react-dropzone File/folder drag-and-drop
framer-motion Animations
Radix UI Accessible primitives (Tooltip, Switch)
lucide-react Icons

Local Development

# 1. Clone the repo
git clone <your-repo-url>
cd zipper
# 2. Install dependencies
npm install
# 3. Start dev server
npm run dev
# 4. Open in browser
open http://localhost:3000

Running Tests

# Run Layer 1 and Layer 2 classifier unit tests
npm test

Privacy Guarantee

🔒 Zero-knowledge processing:

  • No file content is ever read — classification uses only filenames and extensions
  • No network requests after initial page load (Layer 3 downloads a model once, cached in browser)
  • No backend, API routes, or server actions — everything runs in the browser
  • No cookies, analytics, or tracking — zero data collection
  • No sign-up required — just drop files and go

Your files never leave your device. Period.


Project Structure

zipper/
├── app/
│ ├── layout.tsx # Root layout, fonts, SEO metadata
│ ├── page.tsx # Main page — phase-based UI
│ └── globals.css # Global styles, dark theme
├── components/
│ ├── DropZone.tsx # File/folder drop with hero layout
│ ├── FileTree.tsx # Interactive folder tree with drag-drop
│ ├── StatusBar.tsx # Classification progress indicator
│ ├── SchemaSelector.tsx # Organization schema picker
│ ├── SettingsPanel.tsx # Settings slide-out panel
│ ├── DuplicateAlert.tsx # Duplicate file warning banner
│ ├── StatsPanel.tsx # Classification stats + download
│ └── ui/ # Radix-based UI primitives
├── lib/
│ ├── classifier/
│ │ ├── index.ts # Orchestrator + tokenizer
│ │ ├── layer1.ts # Pattern matching (18+ rules)
│ │ ├── layer2.ts # TF-IDF + k-means clustering
│ │ ├── layer3.ts # Local AI embeddings (opt-in)
│ │ ├── duplicates.ts # Near-duplicate detection
│ │ ├── namer.ts # Smart folder naming
│ │ └── schemas.ts # Preset org schemas
│ ├── zipper.ts # ZIP generation + download
│ ├── store.ts # Zustand state management
│ └── utils.ts # Utility functions
├── types/
│ └── index.ts # TypeScript type definitions
└── __tests__/
 ├── layer1.test.ts # Layer 1 unit tests
 └── layer2.test.ts # Layer 2 unit tests

License

MIT

About

Zero-upload, privacy-first file organizer - a 3-layer filename classifier running entirely in your browser.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /