2.5 KiB
2.5 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Turbo Sorter Pro v12.5 - A Python-based image management and sorting system with two web interfaces:
- Streamlit app (port 8501): 5-tab workflow for image discovery, collision resolution, archive management, categorization, and gallery staging
- NiceGUI app (port 8080): Real-time image tagging interface with hotkey support and batch operations
Running the Applications
# Install dependencies
pip install -r requirements.txt
# Run Streamlit interface
streamlit run app.py --server.port=8501 --server.address=0.0.0.0
# Run NiceGUI gallery interface
python3 gallery_app.py
# Run both (Docker production mode)
./start.sh
Architecture
Core Components
-
engine.py-SorterEngineclass with 40+ static methods for all business logic. Central SQLite-based state management at/app/sorter_database.db. Handles profile management, image operations, staging, batch processing, and undo history. -
app.py- Streamlit entry point. Initializes database, manages session state, renders 5-tab interface. -
gallery_app.py- NiceGUI entry point withAppStateclass. Provides async image serving via FastAPI, hotkey-based tagging, and batch copy/move operations.
Streamlit Tab Modules
| Tab | Module | Purpose |
|---|---|---|
| 1. Discovery | tab_time_discovery.py |
Time-sync matcher for sibling folders |
| 2. ID Review | tab_id_review.py |
Collision detection and ID harmonization |
| 3. Unused | tab_unused_review.py |
Archive review and restoration |
| 4. Category Sorter | tab_category_sorter.py |
Bulk categorization and renaming |
| 5. Gallery Staged | tab_gallery_sorter.py |
Interactive tagging interface |
Database Schema (SQLite)
Key tables:
profiles- Workspace configurations with tab path mappingsfolder_ids- Persistent folder identifiersstaging_area- Pending file operationsprocessed_log- Action history for undofolder_tags- Per-folder image tags with metadataprofile_categories- Profile-specific category lists
Key Patterns
- Profile-based multi-tenancy: Each workspace has isolated path configurations
- Soft deletes: Files moved to
_DELETEDfolder for undo support - Parallel image loading:
ThreadPoolExecutorinload_batch_parallel() - Session state: Streamlit
st.session_statefor tab indices and history - WebP compression: PIL-based with configurable quality slider