{"adoption": {"forks": 106, "observed_at": "2026-08-28T04:03:52.009100+00:00", "stars": 1174}, "canonical_url": "https://ross.abutalabs.com/products/home-gallery", "card": {"archived": false, "artifact_type": "application", "description": "Self-hosted open-source web gallery to view your photos and videos featuring mobile-friendly, tagging and AI powered image discovery", "domain": ["photography", "media", "self-hosted", "web-development", "computer-vision"], "enriched": true, "function": ["image-processing", "search-engine", "web-framework", "cli", "self-hosted"], "health_score": 74, "homepage": "https://home-gallery.org", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["xemle/home-gallery"], "name": "xemle/home-gallery", "platform": ["windows", "self-hosted"], "pushed_at": "2026-06-25T21:41:23+00:00", "repo": "xemle/home-gallery", "stars": 1174, "tags": ["photo-gallery", "face-recognition", "similar-image-search", "exif", "reverse-geocoding", "tagging", "videos", "mobile-friendly", "pwa", "linux", "macos", "docker", "web-server", "nodejs"], "topics": ["gallery", "videos", "open-source", "web-gallery", "mobile", "geo-reverse-lookups", "photo-gallery", "reverse-image-search", "tagging", "photos", "calculate-previews", "mobile-phones", "exif", "face-detection", "face-recognition", "linux", "macos", "photography", "self-hosted", "windows"], "urls": [], "use_cases": ["self-host my photo and video gallery without cloud services", "find similar images like sunsets or food without manual tagging", "recognize and group faces of family members in my photos", "browse my photo library on my mobile phone", "view photos on a map with reverse geocoded locations", "serve a gallery on top of my existing folder structure on a NAS"], "what_it_is": "HomeGallery is a self-hosted, open-source web gallery for browsing personal photos and videos with a mobile-friendly interface. It offers AI-powered similar image search, face recognition, tagging, reverse geolocation, and flexible search over local media files served from a NAS or local directories.", "when_to_avoid": ["you need multi-user access control or sharing with other users", "you want a fully GUI-driven setup without CLI/terminal interaction", "you need a polished, commercially supported product with warranty", "you primarily use macOS or Windows, which are barely tested compared to Linux"], "when_to_choose": ["you want full privacy and keep media files local instead of a cloud service", "you need fast mobile browsing of a large personal media archive", "you want AI-powered similar image discovery and face recognition without manual tagging", "you prefer a single-user gallery over multiple source directories"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/home-gallery", "repo": "xemle/home-gallery", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "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:03:52.009100+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:52.009100+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:28:19.638946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4a8aca1273831e5b3e3973935ab6fe5fd8ac2dd208eaad24768495c990d508c", "fetched_at": "2026-08-28T04:03:52.009100+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xemle/home-gallery"}, {"content_hash": "0793d5732557865d4ebc2d630dc69188aa3458defff21b73b9f10166f8565be1", "fetched_at": "2026-08-29T12:33:34.558022+00:00", "kind": "homepage", "missing": false, "url": "https://home-gallery.org"}, {"content_hash": "b6ac888c1969afb375bc462181b567ff2a6c45a990f9ee28af2c460c499b22a8", "fetched_at": "2026-08-29T12:33:34.566808+00:00", "kind": "site_page", "missing": false, "url": "https://home-gallery.org/docs/index.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2080, "days_push": 69, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}