{"adoption": {"forks": 95, "observed_at": "2026-08-28T04:05:37.102666+00:00", "stars": 1792}, "canonical_url": "https://ross.abutalabs.com/products/maloja", "card": {"archived": false, "artifact_type": "application", "description": "Self-hosted music scrobble database to create personal listening statistics and charts", "domain": ["audio", "self-hosted", "analytics", "media"], "enriched": true, "function": ["database", "analytics", "http-server", "api-framework"], "health_score": 78, "homepage": "https://maloja.krateng.ch", "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["krateng/maloja"], "name": "krateng/maloja", "platform": ["self-hosted", "python"], "pushed_at": "2026-08-13T09:43:15+00:00", "repo": "krateng/maloja", "stars": 1792, "tags": ["scrobble", "music-statistics", "listening-history", "lastfm-alternative", "charts", "docker", "web-server"], "topics": ["self-hosted", "scrobble", "music", "statistics", "listening-habits", "charts"], "urls": [], "use_cases": ["track my music listening history without last.fm", "self-host a scrobble server for my music player", "see my top artists and tracks charts over time", "scrobble from multiple clients to my own server", "keep my listening data private and under my control", "forward scrobbles to last.fm while keeping my own copy", "manually log vinyl listening sessions"], "what_it_is": "Maloja is a self-hosted music scrobble server that stores your listening history and generates personal statistics and charts. It is a privacy-focused alternative to Last.fm without social features, supporting standard scrobble APIs and proxy scrobbling to other services.", "when_to_avoid": ["you want Last.fm-style recommendations, radio, or social features", "you cannot or prefer not to run Docker/Podman containers", "you need an official music database sync or metadata enrichment"], "when_to_choose": []}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/maloja", "repo": "krateng/maloja", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "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:05:37.102666+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.102666+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:22:58.692058+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f9273f62fb96cd365b351313abff578cb57496e4a2f035b5647b3b6eea451fea", "fetched_at": "2026-08-28T04:05:37.102666+00:00", "kind": "readme", "missing": false, "url": "https://github.com/krateng/maloja"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2836, "days_push": 20, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}