How aossie-org/pictopy works
PictoPy is a privacy-first desktop photo manager: users add local folders, the backend indexes media and can analyze it with on-device AI, then the desktop supports browsing, searching, albums, and memories. A separate watcher synchronizes filesystem changes; sharing and XMP metadata export are additional capabilities. The README documents the product-level capabilities, while the excerpts and source index show selected backend, sharing, XMP, and watcher relationships. Several frontend-to-backend and unsampled subsystem links are therefore shown only as unverified.
Main entry points: images.py Media indexing and processing · folders.py Folder indexing routes · App.tsx Desktop application · watcher.py Filesystem watcher
Components 23
Desktop experience
- Desktop application
frontend/src/App.tsx - Gallery and search
frontend/src/pages/Home/Home.tsx - Albums and memories
frontend/src/pages/Album/Album.tsx - Model manager
frontend/src/pages/ModelManager/ModelManager.tsx - API client
frontend/src/api/api-functions/index.ts - Tauri shell
frontend/src-tauri/src/main.rs
Backend workflows
- Backend API
backend/main.py - Folder indexing routes
backend/app/routes/folders.py - Media indexing and processing
backend/app/utils/images.py - Video processing
backend/app/utils/videos.py
AI analysis
- Face recognition and search
backend/app/utils/faceSearch.py - Semantic tagging and search
backend/app/utils/semantic_labels.py - On-device model runtime
backend/app/models
Library data
- Folder records
backend/app/database/folders.py - Image records
backend/app/database/images.py - Video records
backend/app/database/videos.py - Memories
backend/app/database/memories.py
Sync and sharing
- Filesystem watcher
sync-microservice/app/utils/watcher.py - XMP metadata export
backend/app/utils/xmp/exporter.py - Share listener
backend/app/share/server.py - Share routes and media
backend/app/share/routes.py
Other components
- Photo manager user
- Local media files
Connections 24
- Photo manager user → Desktop application: uses
README.md - Desktop application → Gallery and search: navigates to
frontend/src/App.tsx - Desktop application → API client: requests data
- API client → Backend API: calls API
- Photo manager user → Local media files: selects folders
README.md - Folder indexing routes → Folder records: reads and writes
backend/app/routes/folders.py - Folder indexing routes → Media indexing and processing: dispatches indexing
backend/app/routes/folders.py - Media indexing and processing → Local media files: reads media
- Media indexing and processing → Image records: stores image data
backend/app/database/images.py - Video processing → Video records: stores video data
- Media indexing and processing → Face recognition and search: analyzes faces
backend/app/utils/faceSearch.py - Media indexing and processing → Semantic tagging and search: tags images
- Face recognition and search → On-device model runtime: uses models
backend/app/utils/faceSearch.py - Semantic tagging and search → On-device model runtime: uses models
- Gallery and search → Albums and memories: opens albums
- Albums and memories → Memories: loads memories
- Model manager → Backend API: manages models
- Tauri shell → Desktop application: hosts UI
- Filesystem watcher → Folder records: reads watched folders
sync-microservice/app/utils/watcher.py - Filesystem watcher → Folder indexing routes: notifies changes
- Folder indexing routes → XMP metadata export: exports metadata
backend/app/routes/folders.py - Share listener → Share routes and media: serves routes
backend/app/share/server.py - Share routes and media → Photo manager user: serves shared media
backend/app/share/routes.py - Photo manager user → Share listener: creates shares