PictoPy is an advanced desktop gallery application that combines the power of Tauri, React, and Rust for the frontend with a Python backend for sophisticated image analysis and management.
- Tauri: Enables building the desktop application
- React: Used for creating the user interface
- Rust: Powers the backend, which the frontend communicates with through Tauri's API
- FastAPI: Serves as the API framework
- SQLite: Database for storing metadata and embeddings
- YOLO: Used for object detection
- FaceNet: Generates face embeddings
- ONNX Runtime: Runs the models efficiently
- DBSCAN: Performs clustering for face embeddings
Handles file system operations and provides a secure bridge between the frontend and local system.
- Smart tagging of photos based on detected objects, faces, and their recognition
- Traditional gallery features of album management
- Advanced image analysis with object detection and facial recognition
- Privacy-focused design with offline functionality
- Efficient data handling and parallel processing
- Smart search and retrieval
- Cross-platform compatibility
Component | Technology |
---|---|
Frontend | React |
Desktop Framework | Tauri |
Rust Backend | Rust |
Python Backend | Python |
Database | SQLite |
Image Processing | OpenCV, ONNX Runtime |
Object Detection | YOLOv8 |
Face Recognition | FaceNet |
API Framework | FastAPI |
State Management | React Hooks |
Styling | Tailwind CSS |
Routing | React Router |
UI Components | Radix UI |
Build Tool | Vite |
Type Checking | TypeScript |
- Node.js (LTS version recommended)
- npm (comes with Node.js)
- Rust (latest stable version)
- Tauri CLI
- Navigate to the frontend directory:
cd frontend
- Install dependencies:
npm install
npm run tauri dev
npm run tauri build
- Navigate to the backend directory:
cd backend
- Set up a virtual environment (recommended)
- Install requirements:
pip install -r requirements.txt
For UNIX-based systems:
./run.sh --test
The backend should now be running on port 8000 by default.
If you encounter any issues, please check the respective documentation for Tauri, React, and FastAPI. For persistent problems, feel free to open an issue in the project repository.