←back to thread

224 points jamesxv7 | 3 comments | | HN request time: 0.207s | source

First of all, this is purely a personal learning project for me, aiming to combine three of my passions: photography, software engineering, and my family memories. I have a large collection of family photos and want to build an interactive experience to explore them, ala Google or Apple Photo features.

My goal is to create a system with smart search capabilities, and one of the most important requirements is that it must run entirely on my local hardware. Privacy is key, but the main driver is the challenge and joy of building it myself (an obviously learn).

The key features I'm aiming for are:

Automatic identification and tagging of family members (local face recognition).

Generation of descriptive captions for each photo.

Natural language search (e.g., "Show me photos of us at the beach in Luquillo from last summer").

I've already prompted AI tools for a high-level project plan, and they provided a solid blueprint (eg, Ollama with LLaVA, a vector DB like ChromaDB, you know it). Now, I'm highly interested in the real-world human experience. I'm looking for advice, learning stories, and the little details that only come from building something similar.

What tools, models, and best practices would you recommend for a project like this in 2025? Specifically, I'm curious about combining structured metadata (EXIF), face recognition data, and semantic vector search into a single, cohesive application.

Any and all advice would be deeply appreciated. Thanks!

Show context
ranger_danger ◴[] No.44426340[source]
https://immich.app/

https://ente.io/

https://photonix.org/

https://github.com/LibrePhotos/librephotos

https://github.com/photoprism/photoprism

replies(2): >>44426579 #>>44428119 #
nullify88 ◴[] No.44428119[source]
I wanted to like Photoprism because unlike Ente and Immich, it supports SQLite databases and doesn't require postgres (I want to keep home lab maintenance to a minimum) but the UI was difficult to like and I couldn't get hardware encoding working on my Intel N100 GPU.
replies(1): >>44431695 #
1. hammyhavoc ◴[] No.44431695[source]
What about Postgres isn't low-maintenance?

The ball-ache of SQLite not scaling outweighs any "maintenance" Postgres needs (it really is just set-and-forget and use a Docker container to schedule database backups—whole thing takes a couple minutes).

replies(2): >>44433818 #>>44434486 #
2. nullify88 ◴[] No.44433818[source]
I'm only now just starting out my on prem photo library and have a couple of thousand which sqlite with WAL seems to have no problems with.

Also considering the type of workload, I imagine photo albums to be write heavy upon photo imports but read heavy afterwards which sqlite should excel at. I'll mostly be syncing pictures from our phones, and it'll be me and the wife using it. Postgres is overkill for my needs.

What about having to do db migrations across major updates?

3. chrismorgan ◴[] No.44434486[source]
“SQLite doesn’t scale” is a common belief, but simply not true. It has limitations on certain sorts of loads, but you won’t run into them on this sort of app—in fact, I would expect consistently better performance from SQLite than from PostgreSQL in typical apps like this. And then SQLite is definitely easier to maintain, being just files.