{"adoption": {"forks": 63, "observed_at": "2026-08-28T04:04:12.070713+00:00", "stars": 1271}, "canonical_url": "https://ross.abutalabs.com/products/pan", "card": {"archived": false, "artifact_type": "library", "description": "A simple, lightweight, and privacy-focused product analytics php package", "domain": ["analytics", "web-development", "privacy"], "enriched": true, "function": ["analytics"], "health_score": 66, "homepage": null, "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["panphp/pan"], "name": "panphp/pan", "platform": ["php", "cli", "self-hosted"], "pushed_at": "2026-04-12T16:45:07+00:00", "repo": "panphp/pan", "stars": 1271, "tags": ["product-analytics", "laravel", "event-tracking", "privacy-focused", "composer-package", "livewire", "inertia", "element-tracking", "web-server"], "topics": ["analytics", "library", "pan", "php"], "urls": [], "use_cases": ["track which tabs on the same page get viewed most in my laravel app", "find out which signup button users click the most", "privacy-friendly product analytics for php without cookies or personal data", "measure hover engagement on help tooltips or popovers", "self-hosted click and impression tracking without gdpr consent banners", "see analytics for my components from the terminal with artisan"], "what_it_is": "Pan is a lightweight, privacy-focused PHP product analytics library for Laravel applications that tracks impressions, hovers, and clicks via a simple data-pan HTML attribute. It collects no personal information and displays tracked metrics in a table through the php artisan pan command.", "when_to_avoid": ["You need full product analytics features like funnels, session replay, user journeys, or conversion goals", "You are not using Laravel, since Pan is built around the Laravel stack and artisan", "You need visitor-level insights such as geography, referrers, devices, or user agents"], "when_to_choose": ["You run a Laravel 11+/PHP 8.3+ app and want simple element-level tracking (impressions, hovers, clicks) with minimal setup", "You want privacy-first analytics with no personal data collection, avoiding consent banner complexity", "You prefer a self-hosted, composer-installable package over external analytics services"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pan", "repo": "panphp/pan", "role": "main", "score": 57}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "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:04:12.070713+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.070713+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:03:23.238280+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "050c2ab4759cfe23b80897ad987745b2457e6c0a505883b0dc082983b6bd324e", "fetched_at": "2026-08-28T04:04:12.070713+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panphp/pan"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 49, "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": 693, "days_push": 143, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 57, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}