66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
# 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
|