A photo indexing and search application using AI for image analysis.
OPENAI_API_KEYNote: This application uses GPT-4 Vision API which requires:
mv ~/Downloads/your-credentials.json ./credentials/google-drive.json
GOOGLE_APPLICATION_CREDENTIALS=./credentials/google-drive.json
ENABLE_GOOGLE_DRIVE=true
Install Docker:
Install dependencies:
npm install
OPENAI_API_KEY=your_openai_key
GOOGLE_APPLICATION_CREDENTIALS=path_to_credentials.json
CHROMA_DB_PATH=./data/chromadb
PHOTOS_CACHE_DIR=./data/cache
PORT=3001
LOCAL_PHOTO_PATHS=/path/to/photos/dir1,/path/to/photos/dir2
ENABLE_GOOGLE_DRIVE=false
npm run chroma
This will start ChromaDB in a Docker container with persistent storage in the ./data/chromadb directory.
npm run dev
npm run server
Create the following directories before running the application:
data/
cache/ # Temporary storage for image processing
chromadb/ # Vector database storage
credentials/ # Store your Google Drive credentials here
You can create these directories using:
mkdir -p data/cache data/chromadb credentials
/src/components - React UI components/src/services - Backend services and API integration/src/indexer - Photo indexing and metadata extraction/src/types - TypeScript type definitions/src/utils - Utility functions/src/hooks - Custom React hooks/server - Express.js backend serverThe application supports multiple LLM backends. Configure your preferred LLM in /src/config/llm.ts.
Supported LLMs:
To use the local DeepSeek image analysis model:
pip install torch torchvision transformers pillow
{
"llm": {
"provider": "deepseek",
"modelName": "deepseek-ai/deepseek-vl-7b-chat",
"temperature": 0.7
}
}
Available DeepSeek vision-language models:
deepseek-ai/deepseek-vl-7b-chat - Recommended balance of quality and performancedeepseek-ai/deepseek-vl-1.3b-chat - Lightweight model for systems with limited resourcesdeepseek-ai/janus-pro-35b-chat-complete - High quality but requires significantly more GPU memoryFor text generation and embeddings, lightweight models are used automatically:
deepseek-ai/deepseek-coder-1.3b-instructsentence-transformers/all-MiniLM-L6-v2npm install
OPENAI_API_KEY=your_openai_api_key
LOCAL_PHOTO_PATHS=/path/to/photos,/another/path
CHROMA_DB_PATH=./data/chromadb
PHOTOS_CACHE_DIR=./data/cache
PORT=3001
npm run chroma:up
npm run server
npm run dev
MIT
6 commits
TypeScript
94.4%
Python
3.7%
CSS
1.2%
A photo indexing and search application using AI for image analysis.
OPENAI_API_KEYNote: This application uses GPT-4 Vision API which requires:
mv ~/Downloads/your-credentials.json ./credentials/google-drive.json
GOOGLE_APPLICATION_CREDENTIALS=./credentials/google-drive.json
ENABLE_GOOGLE_DRIVE=true
Install Docker:
Install dependencies:
npm install
OPENAI_API_KEY=your_openai_key
GOOGLE_APPLICATION_CREDENTIALS=path_to_credentials.json
CHROMA_DB_PATH=./data/chromadb
PHOTOS_CACHE_DIR=./data/cache
PORT=3001
LOCAL_PHOTO_PATHS=/path/to/photos/dir1,/path/to/photos/dir2
ENABLE_GOOGLE_DRIVE=false
npm run chroma
This will start ChromaDB in a Docker container with persistent storage in the ./data/chromadb directory.
npm run dev
npm run server
Create the following directories before running the application:
data/
cache/ # Temporary storage for image processing
chromadb/ # Vector database storage
credentials/ # Store your Google Drive credentials here
You can create these directories using:
mkdir -p data/cache data/chromadb credentials
/src/components - React UI components/src/services - Backend services and API integration/src/indexer - Photo indexing and metadata extraction/src/types - TypeScript type definitions/src/utils - Utility functions/src/hooks - Custom React hooks/server - Express.js backend serverThe application supports multiple LLM backends. Configure your preferred LLM in /src/config/llm.ts.
Supported LLMs:
To use the local DeepSeek image analysis model:
pip install torch torchvision transformers pillow
{
"llm": {
"provider": "deepseek",
"modelName": "deepseek-ai/deepseek-vl-7b-chat",
"temperature": 0.7
}
}
Available DeepSeek vision-language models:
deepseek-ai/deepseek-vl-7b-chat - Recommended balance of quality and performancedeepseek-ai/deepseek-vl-1.3b-chat - Lightweight model for systems with limited resourcesdeepseek-ai/janus-pro-35b-chat-complete - High quality but requires significantly more GPU memoryFor text generation and embeddings, lightweight models are used automatically:
deepseek-ai/deepseek-coder-1.3b-instructsentence-transformers/all-MiniLM-L6-v2npm install
OPENAI_API_KEY=your_openai_api_key
LOCAL_PHOTO_PATHS=/path/to/photos,/another/path
CHROMA_DB_PATH=./data/chromadb
PHOTOS_CACHE_DIR=./data/cache
PORT=3001
npm run chroma:up
npm run server
npm run dev
MIT
6 commits
TypeScript
94.4%
Python
3.7%
CSS
1.2%