{"adoption": {"forks": 224, "observed_at": "2026-08-28T04:07:18.428031+00:00", "stars": 2760}, "canonical_url": "https://ross.abutalabs.com/products/ownphotos", "card": {"archived": false, "artifact_type": "application", "description": "Self hosted alternative to Google Photos ", "domain": ["photography", "media", "self-hosted", "computer-vision", "machine-learning", "web-development"], "enriched": true, "function": ["image-processing", "computer-vision", "search-engine", "auth", "web-framework", "api-framework", "self-hosted"], "health_score": 20, "homepage": null, "language": "Jupyter Notebook", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["hooram/ownphotos"], "name": "hooram/ownphotos", "platform": ["self-hosted", "python", "cross-platform"], "pushed_at": "2022-12-07T23:36:50+00:00", "repo": "hooram/ownphotos", "stars": 2760, "tags": ["photo-gallery", "face-recognition", "google-photos-alternative", "django", "react", "object-detection", "photo-management", "archived-project", "librephotos-predecessor", "docker", "web-server"], "topics": ["backend", "photos", "docker", "face-detection", "face-recognition", "gallery", "selfhosted", "django", "django-rest-framework", "object-detection", "google-photos"], "urls": [], "use_cases": ["self-host my photo library like google photos", "organize photos by people using face recognition", "search my photos by objects detected in them", "automatically create event albums from my pictures", "view my photos on a map by location", "run a private photo gallery on my own server with docker"], "what_it_is": "Ownphotos is a self-hosted Google Photos alternative built with a Django backend and React frontend, offering face recognition, object detection, automatic event albums, and location-based photo search. The project has been archived and its development has moved to LibrePhotos.", "when_to_avoid": ["you want an actively maintained self-hosted photo manager - use LibrePhotos instead", "you need a stable production-ready photo solution, since this project was explicitly in early stages", "you require photo sharing or editing features that were never completed here"], "when_to_choose": ["you want a self-hosted Google Photos clone with face detection and object search", "you prefer owning your photo data on your own hardware instead of a cloud service", "you want to explore the original codebase that LibrePhotos evolved from"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ownphotos", "repo": "hooram/ownphotos", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.428031+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:18:45.667043+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eef0fb8121634dacd998977f09080353dc0654aa037d1977e309b9b2d92dc726", "fetched_at": "2026-08-28T04:07:18.428031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hooram/ownphotos"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3334, "days_push": 1365, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}