A self-hosted home inventory management system that uses AI to analyze photos of household items and automatically extract metadata.
- πΈ AI-Powered Photo Analysis: Upload photos and let AI extract item details automatically
- π€ Multi-AI Provider Support: Choose between Anthropic Claude, OpenAI GPT-4, Google Gemini, or local Ollama
- π± Mobile-First PWA: Works seamlessly on phones with camera integration
- ποΈ Hierarchical Organization: Organize items by location (Home β Floor β Room β Storage)
- π¦ Category Management: Flexible category system with hierarchical structure
- π Document Management: Attach warranties, manuals, and receipts
- β° Warranty Tracking: Get notified of expiring warranties
- π° Inventory Valuation: Track purchase price and current value
- π Full-Text Search: Find items quickly across all fields
- π Dashboard Analytics: Visualize your inventory at a glance
- π³ Docker Deployment: Single-command deployment with Docker Compose
- π Privacy-First: Self-hosted, no external dependencies (except AI APIs if chosen)
- Docker and Docker Compose installed
- (Optional) API key for Claude, OpenAI, or Gemini, OR a running Ollama instance
- Clone the repository:
git clone https://github.com/yourusername/homeregistry.git
cd homeregistry- Create environment file:
cp .env.example .env- (Optional) Edit
.envto add your AI provider API key:
# For Claude
AI_PROVIDER=claude
CLAUDE_API_KEY=sk-ant-your-api-key
# OR for OpenAI
AI_PROVIDER=openai
OPENAI_API_KEY=sk-your-api-key
# OR for Google Gemini
AI_PROVIDER=gemini
GEMINI_API_KEY=your-gemini-api-key
# OR for local Ollama (no API key needed)
AI_PROVIDER=ollama
OLLAMA_ENDPOINT=http://ollama:11434- Start the application:
docker-compose up -d-
Access HomeRegistry at
http://localhost:8080 -
Complete the first-run setup wizard to configure your AI provider
-
Uncomment the Ollama service in
docker-compose.yml -
Start the application:
docker-compose up -d- Pull the llava model:
docker exec -it homeregistry-ollama ollama pull llava- In the setup wizard or settings, select "Ollama (Local)" as your AI provider
- Navigate to the Add tab
- Take photos or upload images of your item
- Click Analyze with AI to extract information
- Review and edit the AI-generated details
- Select category and location
- Save the item
Locations: Create a hierarchical structure:
- Home β Ground Floor β Kitchen β Drawer 3
- Home β Basement β Workshop β Tool Cabinet
Categories: Organize items by type:
- Electronics β Computers β Laptops
- Kitchen β Appliances β Small Appliances
- When adding/editing an item, set the warranty expiration date
- View expiring warranties on the Dashboard
- Attach warranty documents to items for easy reference
Use the search bar on the Items page to find items by:
- Name
- Description
- Manufacturer
- Model number
- Serial number
- Backend: Python FastAPI
- Database: SQLite with WAL mode for concurrent access
- Frontend: Vue.js 3 with Vite
- AI Integration: Multi-provider (Claude, OpenAI, Ollama)
- Deployment: Docker Compose
- PWA: Service Worker for offline capability
homeregistry/
βββ backend/
β βββ app/
β β βββ api/ # API endpoints
β β βββ models/ # SQLAlchemy models
β β βββ schemas/ # Pydantic schemas
β β βββ services/ # Business logic
β β β βββ ai/ # AI provider implementations
β β βββ main.py # FastAPI application
β βββ Dockerfile
βββ frontend/
β βββ src/
β β βββ views/ # Vue components for pages
β β βββ components/ # Reusable components
β β βββ services/ # API client
β β βββ router/ # Vue Router config
β βββ Dockerfile
βββ docker-compose.yml
| Variable | Description | Default |
|---|---|---|
AI_PROVIDER |
AI provider to use (claude/openai/ollama) | claude |
CLAUDE_API_KEY |
Anthropic Claude API key | - |
OPENAI_API_KEY |
OpenAI API key | - |
OLLAMA_ENDPOINT |
Ollama endpoint URL | http://ollama:11434 |
DEFAULT_CURRENCY |
Default currency for prices | NOK |
MAX_IMAGE_SIZE_MB |
Maximum image upload size | 10 |
MAX_DOCUMENT_SIZE_MB |
Maximum document upload size | 50 |
After deployment, configure these in the Settings page:
- AI Provider selection
- API keys
- Default currency
Once running, access the interactive API documentation at:
- Swagger UI:
http://localhost:8080/api/docs - ReDoc:
http://localhost:8080/api/redoc
- Single-User Application: No authentication system (designed for self-hosting)
- API Keys: Store sensitive keys in environment variables, not in code
- Network Access: Recommended to run behind a reverse proxy with authentication if exposing to internet
- Backups: Regularly backup the
/datavolume
Backend:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000Frontend:
cd frontend
npm install
npm run devThe application automatically creates tables on first run. For schema changes, use Alembic:
cd backend
alembic revision --autogenerate -m "Description of changes"
alembic upgrade headBackup the Docker volume containing all data:
docker run --rm -v homeregistry_homeregistry-data:/data -v $(pwd):/backup \
alpine tar czf /backup/homeregistry-backup-$(date +%Y%m%d).tar.gz /datadocker run --rm -v homeregistry_homeregistry-data:/data -v $(pwd):/backup \
alpine sh -c "cd / && tar xzf /backup/homeregistry-backup-YYYYMMDD.tar.gz"Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with FastAPI, Vue.js, and modern web technologies
- AI analysis powered by Anthropic Claude, OpenAI GPT-4, or Ollama
- Icons and UI inspired by Material Design
- Check your API key is correct in Settings
- Test the connection using "Test Connection" button
- Check Docker logs:
docker logs homeregistry-backend
- Ensure the images volume is mounted correctly
- Check file permissions in the
/data/imagesdirectory
- SQLite is configured with WAL mode for better concurrent access
- If issues persist, check no other processes are accessing the database
# Pull the llava model
docker exec -it homeregistry-ollama ollama pull llava
# Verify it's installed
docker exec -it homeregistry-ollama ollama listFor issues and questions:
- Open an issue on GitHub
- Check existing issues for solutions
Future enhancements planned:
- CSV import/export
- Barcode scanning
- QR code label generation
- Multi-user support with authentication
- Maintenance schedules and reminders
- Loan tracking (who borrowed what)
- Insurance report generation
- Cloud backup integration
Made with β€οΈ for organized homes