A modern desktop application for sorting and organizing images using Tauri, React, and TypeScript. PicSort provides an intuitive interface for batch processing images into organized folder structures.
- πΌοΈ Image Management: Load and preview images from any folder
- π Smart Organization: Sort images into destination folders with keyboard shortcuts
- π― Batch Processing: Copy multiple images to organized folder structures
- β¨οΈ Keyboard Navigation: Use number sequences to quickly navigate folder hierarchies
- π Visual Feedback: See current and pending image counts for each folder
- π¨ Modern UI: Clean, dark-themed interface with responsive design
- Node.js (v18 or higher)
- pnpm (recommended) or npm
- Rust (for local development)
- Docker (for containerized builds)
-
Clone the repository
git clone <repository-url> cd picsort
-
Install dependencies
pnpm install
-
Start the development server
pnpm dev
-
Build the application
pnpm build
-
Run the Tauri app
pnpm tauri dev
sudo apt update
sudo apt install libwebkit2gtk-4.0-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev pkg-configbrew install node- Install Visual Studio Build Tools
- Install WebView2
-
Build the Docker image
docker build -t picsort . -
Run the container
docker run -it --rm \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME:$HOME \ picsort
For building on different architectures:
# Build for multiple platforms
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t picsort:latest .-
Build for current platform
pnpm tauri build
-
Build for specific platform
# Windows pnpm tauri build --target x86_64-pc-windows-msvc # macOS pnpm tauri build --target x86_64-apple-darwin # Linux pnpm tauri build --target x86_64-unknown-linux-gnu
# Build for Linux
docker build -t picsort-linux .
# Build for Windows (requires Windows container)
docker build -t picsort-windows --platform windows/amd64 .
# Build for macOS (requires macOS host)
docker build -t picsort-macos --platform darwin/amd64 .Update version numbers in:
package.jsonsrc-tauri/Cargo.tomlsrc-tauri/tauri.conf.json
# Clean previous builds
pnpm tauri build --release
# The built application will be in:
# src-tauri/target/release/# Create installer for current platform
pnpm tauri build --release
# The installer will be in:
# src-tauri/target/release/bundle/# Tag the image
docker tag picsort:latest your-registry/picsort:latest
# Push to registry
docker push your-registry/picsort:latestpicsort/
βββ src/ # React frontend source
β βββ components/ # React components
β βββ lib/ # Utility functions
β βββ pages/ # Page components
βββ src-tauri/ # Rust backend
β βββ src/ # Rust source code
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # Tauri configuration
βββ public/ # Static assets
βββ Dockerfile # Docker configuration
βββ README.md # This file
Edit src-tauri/tauri.conf.json to customize:
- App metadata (name, version, identifier)
- Window settings
- Security policies
- Bundle settings
vite.config.ts: Vite build configurationtailwind.config.js: Tailwind CSS configurationtsconfig.json: TypeScript configuration
-
Build fails on Linux
- Ensure all system dependencies are installed
- Check that WebKit2GTK is properly installed
-
Docker build fails
- Ensure Docker has sufficient memory (at least 4GB)
- Clear Docker cache:
docker system prune -a
-
App doesn't start
- Check console for error messages
- Verify all dependencies are installed
- Try running with
--debugflag
# Run with debug logging
RUST_LOG=debug pnpm tauri dev
# Build with debug symbols
pnpm tauri build --debug- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
[Add your license information here]
For issues and questions:
- Create an issue on GitHub
- Check the troubleshooting section above
- Review the Tauri documentation: https://tauri.app/