Discord Channel Link
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 |
-
Setup Using Script (Recommended Approach): Guide
-
Setup Manually: Guide
-
Docker Setup:
-
Docker Compose Setup: Guide
-
Setup using Dockerfile
- For setting up the frontend, follow the instructions in the Frontend Setup Guide.
- For setting up the backend, follow the instructions in the Backend Setup Guide.
- For setting up the frontend, follow the instructions in the Frontend Setup Guide.
-
cd frontend
npm test
-
FastAPI
cd backend pytest
-
Tauri
cd frontend/src-tauri/ cargo test
Create Signing Keys for tauri using the command:
npm run tauri signer generate
Set the public key in tauri.conf.json as pubkey and private key and password in Environment Variables as TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD
There is a preset pubkey in tauri.conf.json ; private key and password for it is:
TAURI_SIGNING_PRIVATE_KEY=dW50cnVzdGVkIGNvbW1lbnQ6IHJzaWduIGVuY3J5cHRlZCBzZWNyZXQga2V5ClJXUlRZMEl5NlF2SjE3cWNXOVlQQ0JBTlNITEpOUVoyQ3ZuNTdOSkwyNE1NN2RmVWQ1a0FBQkFBQUFBQUFBQUFBQUlBQUFBQU9XOGpTSFNRd0Q4SjNSbm5Oc1E0OThIUGx6SS9lWXI3ZjJxN3BESEh1QTRiQXlkR2E5aG1oK1g0Tk5kcmFzc0IvZFZScEpubnptRkxlbDlUR2R1d1Y5OGRSYUVmUGoxNTFBcHpQZ1dSS2lHWklZVHNkV1Byd1VQSnZCdTZFWlVGOUFNVENBRlgweUU9Cg==
TAURI_SIGNING_PRIVATE_KEY_PASSWORD=pass
npm run tauri build
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.