{"adoption": {"forks": 478, "observed_at": "2026-08-28T04:09:44.830294+00:00", "stars": 6515}, "canonical_url": "https://ross.abutalabs.com/products/photoview-photoview", "card": {"archived": false, "artifact_type": "application", "description": "Photo gallery for self-hosted personal servers", "domain": ["photography", "self-hosted", "media", "web-development"], "enriched": true, "function": ["image-processing", "http-server", "search-engine", "file-system"], "health_score": 86, "homepage": "https://photoview.github.io/", "language": "Go", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["photoview/photoview"], "name": "photoview/photoview", "platform": ["self-hosted", "go"], "pushed_at": "2026-08-20T09:32:51+00:00", "repo": "photoview/photoview", "stars": 6515, "tags": ["photo-gallery", "exif-metadata", "raw-photos", "face-recognition", "media-server", "nas", "video-thumbnails", "maps", "docker", "linux", "web-server"], "topics": ["photography", "raw", "docker", "nas", "selfhosted", "photo", "gallery", "photo-gallery", "photographers", "exif", "hacktoberfest"], "urls": [], "use_cases": ["self-host a personal photo gallery on my NAS", "browse thousands of high-resolution RAW photos quickly", "view my photos on a map using EXIF GPS data", "share photo albums with password-protected links", "organize photos by filesystem folders with automatic scanning", "host a private multi-user photo library with Docker"], "what_it_is": "Photoview is a self-hosted photo gallery web application for personal servers, written in Go. It scans directories of photos and videos, generates thumbnails, extracts EXIF metadata, and organizes media into albums mirroring the filesystem.", "when_to_avoid": ["you need AI-based face recognition or automatic tagging like PhotoPrism or Immich", "you want a maintained official mobile app (the iOS app is no longer maintained)", "you need cloud-sync features beyond Nextcloud/Samba/FTP media sources", "you want a gallery that manages uploads rather than scanning existing files"], "when_to_choose": ["you want a lightweight, fast self-hosted gallery that mirrors your filesystem structure", "you shoot RAW photos and need Darktable-based conversion support", "you want EXIF metadata display and automatic map grouping of photos", "you prefer Docker deployment with PostgreSQL and multi-user sharing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/photoview-photoview", "repo": "photoview/photoview", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "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:09:44.830294+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:44.830294+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:44:26.562641+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a6319658312e191b93a9cc25152338157041fb0341372a77ba7a5457590348fb", "fetched_at": "2026-08-28T04:09:44.830294+00:00", "kind": "readme", "missing": false, "url": "https://github.com/photoview/photoview"}, {"content_hash": "f1a7bdc1debcfcdad89beb5da3146386763d7078cdef6fac8f79ababe7e4b5f9", "fetched_at": "2026-08-29T08:40:38.403391+00:00", "kind": "homepage", "missing": false, "url": "https://photoview.github.io/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2614, "days_push": 13, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}