An intelligent, rule-based file organizer with a modern desktop dashboard UI.
Built with Python · PyWebView · HTML/CSS/JS · SQLite
SmartSort is a desktop application that organizes your files into categorized folders. It uses content-based detection (not just file extensions), custom YAML rules, EXIF metadata for photos, and built-in deduplication — wrapped in a sleek modern desktop dashboard.
No more manually sorting your Downloads folder. Point SmartSort at a directory, click Organize, and it handles the rest.
| Feature | Description |
|---|---|
| Modern Desktop Dashboard | Sleek web-based UI wrapped in PyWebView |
| Smart Classification | Uses content signatures, not just file extensions |
| EXIF-aware | Sorts photos by date taken (year/month) |
| Deduplication | Detects and skips exact duplicate files |
| Undo System | Every move is logged in SQLite — revert any operation |
| Dry Run Mode | Preview where files would go before committing |
| File Watching | Auto-organize files as they drop into a folder |
| Custom Rules | Define your own sorting rules via YAML config |
- Go to Releases
- Download
SmartSort.exe - Double-click to run — no installation needed
git clone https://github.com/Haruuowo/SmartSort.git
cd SmartSort
pip install -r requirements.txt
python Organizer.pyEdit config/rules.yaml to define sorting rules:
rules:
- name: "Screenshots"
condition:
name_contains: ["screenshot", "screen_shot"]
destination: "Images/Screenshots"
- name: "Documents"
condition:
extensions: [".pdf", ".doc", ".docx", ".txt"]
destination: "Documents"
- name: "Photos with EXIF"
condition:
extensions: [".jpg", ".jpeg", ".png"]
has_exif_date: true
destination: "Photos/{year}/{month}"SmartSort/
├── Organizer.py # Main App Entry Point
├── webview_app.py # PyWebView Launcher
├── server.py # Local HTTP API Server
├── config/
│ └── rules.yaml # Sorting rules
├── web/ # Dashboard UI Assets
│ ├── index.html
│ ├── style.css
│ └── app.js
├── smartsort/
│ ├── classifier.py # File classification engine
│ ├── dedupe.py # Duplicate detection
│ ├── history.py # SQLite undo system
│ ├── rules.py # YAML rule engine
│ └── watcher.py # Real-time file watcher
├── tests/
│ ├── test_dedupe.py
│ └── test_rules.py
└── requirements.txt
- Python 3.11 — Core logic & API server
- PyWebView + HTML/CSS/JS — Modern Desktop Dashboard UI
- SQLite — Undo/history database
- Pillow — EXIF metadata extraction
- filetype — Content-based file detection
- PyYAML — Rule configuration
- PyInstaller — Executable packaging
pytest tests/Made by Haruuowo