{"adoption": {"forks": 110, "observed_at": "2026-08-28T04:06:33.990682+00:00", "stars": 2284}, "canonical_url": "https://ross.abutalabs.com/products/immichframe", "card": {"archived": false, "artifact_type": "application", "description": null, "domain": ["media", "photography", "self-hosted", "web-development"], "enriched": true, "function": ["image-processing", "http-server", "gui"], "health_score": 99, "homepage": "https://immichframe.dev/", "language": "C#", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["immichFrame/ImmichFrame"], "name": "immichFrame/ImmichFrame", "platform": ["cross-platform", "self-hosted"], "pushed_at": "2026-08-16T15:16:16+00:00", "repo": "immichFrame/ImmichFrame", "stars": 2284, "tags": ["digital-photo-frame", "immich", "slideshow", "sveltekit", "asp-net-core", "e-ink", "raspberry-pi", "docker", "web-server", "android"], "topics": ["digital-photo-frame", "immich", "immich-slideshow", "photoframe", "immichframe", "asp-net-core", "sveltekit", "svelte", "docker", "csharp", "dotnet"], "urls": [], "use_cases": ["display my immich photos on a wall-mounted tablet as a photo frame", "turn a raspberry pi into a digital photo frame for my self-hosted photo library", "show a slideshow of my immich albums on an android tv", "run an e-ink photo display from my immich server", "set up an office dashboard that rotates team photos from immich", "self-hosted alternative to a smart photo frame"], "what_it_is": "ImmichFrame is a companion application to the self-hosted Immich photo server that turns a photo and video collection into a fullscreen digital photo frame slideshow. It runs as a Docker container with a web-based SvelteKit frontend and supports browsers, Android, Android TV, Apple TV, tablets, and e-ink displays.", "when_to_avoid": ["you don't run an Immich server, since ImmichFrame is only a display client for Immich", "you need a full photo management or editing solution rather than a display client", "you want a frame that works with cloud photo services like Google Photos"], "when_to_choose": ["you already self-host Immich and want to display its photos on a dedicated screen", "you need a frame that works across browsers, Android/Apple TV, tablets, and e-ink devices", "you want a Docker-deployable, customizable slideshow experience"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/immichframe", "repo": "immichFrame/ImmichFrame", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "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:06:33.990682+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.990682+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:41:06.156532+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4800bdabd95aae5d2767479c0d0835921cb361d034c408ee7d9dcd3b084c2a40", "fetched_at": "2026-08-28T04:06:33.990682+00:00", "kind": "readme", "missing": false, "url": "https://github.com/immichFrame/ImmichFrame"}, {"content_hash": "4bebbb9d6d307354a71f393e028beb4d8a0a7ce3b67a44eb808e56a3eed933d8", "fetched_at": "2026-08-29T10:21:22.269617+00:00", "kind": "homepage", "missing": false, "url": "https://immichframe.dev/"}, {"content_hash": "605a12e83ee8c4a0c78a9bf74b777f7c6512eb359c7f360ebb52911fca06ee68", "fetched_at": "2026-08-29T10:21:22.278342+00:00", "kind": "site_page", "missing": false, "url": "https://immichframe.dev/docs/overview"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 68, "rhythm": 93}, "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": 962, "days_push": 17, "days_rel": 47, "gap_med": 11, "n_releases_24m": 30}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}