PicFolio is a self-hosted, privacy-first photo management app โ a local Google Photos alternative. It runs entirely on your own machine, giving you AI-powered photo organization, face grouping, smart search, duplicate detection, and a clean web UI, without paying for cloud storage or sharing your photos with anyone.
-
Multi-user support โ Separate photo libraries per user, each with their own login
-
AI Auto-tagging โ Every photo is tagged automatically using the Recognize Anything Model (RAM)
-
Face Grouping โ Detects and clusters people across your library using DeepFace; name them for easy browsing
-
Natural Language Search โ Search photos by description ("dog at beach") powered by Gemini Pro + semantic embeddings
-
Auto Albums โ Photos grouped automatically by scene and content
-
Places / GPS Map โ Browse photos by location using EXIF GPS data on an interactive map
-
Duplicate Detection โ Find and remove duplicate photos
-
Blur Detection โ Surface and clean up low-quality, blurry shots
-
Favorites & Bin โ Like photos, delete to bin, restore anytime
-
Upload โ Drag and drop upload from browser (works on mobile too)
-
Statistics โ View storage usage and library stats
-
100% Local โ Nothing leaves your machine (except an optional Gemini API key for search)
| Layer | Technology |
|---|---|
| Backend | Python, Flask, SQLite, Waitress |
| AI / ML | RAM (Recognize Anything Model), DeepFace, Gemini Pro, SentenceTransformers |
| Frontend | Next.js 15, React 19, Tailwind CSS |
| Maps | Leaflet, React Leaflet |
| Media | Pillow, MoviePy, OpenCV |
-
Python 3.10+
-
Node.js 18+
-
A Gemini API key (free, optional โ only needed for AI search)
1. Create and activate a virtual environment
# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate
2. Install Python dependencies
pip install -r Backend/requirements.txt
3. Configure environment variables
Create a .env file inside the Backend/ folder:
Gemini=your_gemini_api_key_here
4. Run the backend
python backend/start.py
The backend server will start on http://localhost:5000.
1. Navigate to the frontend directory
cd Frontend
2. Install dependencies
npm i
3. Run the development server
npm run dev
The frontend will be available at http://localhost:3000.
-
Open
http://localhost:3000in your browser -
Go to the Setup page and enter your backend server URL (
http://localhost:5000) -
Create your first user
-
Start uploading photos
Contributions are welcome! Whether it's bug fixes, feature enhancements, or documentation improvements, feel free to submit a pull request.




