# tafa A local web app for quickly triaging photos from cloud storage. The idea is simple: when faced with a large set of photos, making a binary decision per image — keep or discard — is much faster than manually sorting through folders. Each photo fills the screen, you press a key, and move on. No clicking, no drag and drop, no context switching. The speed comes from keeping the decision minimal and the interface out of the way. ## How it works 1. Configure one or more rclone source paths, a date range, and a destination folder 2. tafa lists matching photos from the cloud and downloads a small initial batch 3. Review photos with keyboard shortcuts — the rest download in the background 4. Accepted photos are moved to your destination folder; ignored photos are deleted ## Requirements - [uv](https://docs.astral.sh/uv/) — Python package manager - [rclone](https://rclone.org/) — configured with your cloud remote ## Setup ```bash uv sync ``` ## Usage ``` make dev # start in foreground with live reload (development) make start # start in background make stop # stop background server make restart # restart background server make logs # tail background server log make kill # force-kill anything on port 8000 make clean # remove venv, logs, PID file and local staging ``` Open [http://localhost:8000](http://localhost:8000) after starting. ## Keyboard shortcuts | Key | Action | |-----|--------| | `→` | Accept — move photo to destination folder | | `←` | Ignore — delete photo from staging | | `↑` | Remind me — show again ~10 photos later | ## Configuration Settings are saved to `~/.tafa/config.json` between sessions. | Field | Description | |-------|-------------| | Source paths | rclone remote paths, one per line (e.g. `remote:Photos/2026`) | | From / To | Date range — matched against the date in the filename (`YYYY-MM-DD`) | | Destination | Local folder where accepted photos are moved | ## About This is a throwaway project built with AI assistance (Claude). It does the job but wasn't written with long-term maintenance in mind. Expect rough edges. The name tafa has no meaning. ## Notes - Photos already present in the destination folder are highlighted with a green border and won't be copied again if accepted - Staging files are stored in `~/.tafa/staging/` and cleaned up automatically on server shutdown - HEIC/HEIF files are skipped as browsers on Linux cannot display them natively