Web Based Image Sorter
  • Vue 59.8%
  • Python 35.1%
  • TypeScript 3.4%
  • CSS 1%
  • HTML 0.5%
  • Other 0.2%
Find a file
2026-06-24 14:27:01 -04:00
cosszy Loading spinners, refresh issue and embedded JSON metadata 2026-06-24 14:27:01 -04:00
frontend Loading spinners, refresh issue and embedded JSON metadata 2026-06-24 14:27:01 -04:00
specs Loading spinners, refresh issue and embedded JSON metadata 2026-06-24 14:27:01 -04:00
tests Destination exists with rename check, folder names, better error handling 2026-06-23 13:01:04 -04:00
.gitignore Initial spec implemented and it seems to work correctly 2026-06-19 12:59:56 -04:00
AGENT.md Implemented video viewer 2026-06-21 09:32:43 -04:00
cosszy.example.yml Destination exists with rename check, folder names, better error handling 2026-06-23 13:01:04 -04:00
justfile Initial spec implemented and it seems to work correctly 2026-06-19 12:59:56 -04:00
LICENSE Implemented exif metadata view, shortcut help, browse mode and added AGPLv3 licencing. 2026-06-22 20:56:46 -04:00
pyproject.toml Video metadata added 2026-06-24 14:09:26 -04:00
README.md Implemented exif metadata view, shortcut help, browse mode and added AGPLv3 licencing. 2026-06-22 20:56:46 -04:00
uv.lock Video metadata added 2026-06-24 14:09:26 -04:00

Cosszy

A simple web based image sorter. Browse a source folder of images, rate and select them, then bulk-move them into subfolders of a destination set (or to trash). There is no database or saved state — everything is driven by the configuration YAML.

Configuration

Copy cosszy.example.yml to cosszy.yml and edit the folders:

cosszy:
    web:
        port: 8080
        address: 0.0.0.0
    folders:
      sources:
        - /media/storage/phone-photos
        - /media/storage/dslr-photos
      destination_sets:
        - /media/array/photo_storage
        - /foo/bar/other_sort_location
      trash: /media/storage/sort-trash

The config file is selected with --config (default cosszy.yml).

Running

just run          # build the SPA into public/ then start the web server

Other recipes:

  • just pack — build the Vue single page app into public/
  • just dev — run the Vite dev server (proxies /api to the backend on :8080)
  • just test — run the pytest suite

Layout

  • cosszy/ — Python backend (Flask + waitress, served with python -m cosszy)
  • frontend/ — Vue 3 + Vite source for the single page app
  • public/ — compiled SPA (build output, git-ignored)
  • tests/ — pytest unit tests

License

Cosszy is licensed under the GNU Affero General Public License v3.0 or later. See LICENSE for the full text.