{"adoption": {"forks": 425, "observed_at": "2026-08-28T04:05:37.978733+00:00", "stars": 1800}, "canonical_url": "https://ross.abutalabs.com/products/zaneperfor", "card": {"archived": false, "artifact_type": "application", "description": "前端性能监控系统,消息队列,高可用,集群等相关架构", "domain": ["monitoring", "web-development", "analytics", "frontend"], "enriched": true, "function": ["monitoring", "analytics", "message-queue", "caching", "web-framework", "data-visualization", "alerting"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["wangweianger/zanePerfor"], "name": "wangweianger/zanePerfor", "platform": ["self-hosted"], "pushed_at": "2024-06-27T03:45:02+00:00", "repo": "wangweianger/zanePerfor", "stars": 1800, "tags": ["frontend-performance-monitoring", "eggjs", "mongodb", "redis", "kafka", "vue", "real-user-monitoring", "rum", "wechat-miniprogram-sdk", "pv-uv-analytics", "real-time", "nodejs", "docker", "web-server"], "topics": ["nodejs", "egg", "mongodb", "redis", "vuejs2", "kafka"], "urls": [], "use_cases": ["monitor frontend page load performance", "track javascript errors and ajax performance on my website", "self-hosted web analytics with pv uv tracking", "user behavior funnel analysis", "alert when site traffic spikes", "monitor wechat mini-program performance", "performance stats by city and province"], "what_it_is": "zanePerfor is a self-hosted frontend performance monitoring and analytics platform built on Node.js (Egg), Vue, MongoDB, Redis, and Kafka. It collects page load performance, errors, AJAX and resource timing from web and WeChat mini-program SDKs, and provides a CMS dashboard with PV/UV/IP stats, funnel analysis, geo heatmaps, and email alerting.", "when_to_avoid": ["you need a maintained solution with active development and clear licensing", "you only need simple backend/APM monitoring rather than frontend RUM", "you cannot operate MongoDB, Redis, and Kafka infrastructure"], "when_to_choose": ["you want a self-hosted real-user monitoring (RUM) platform for web or WeChat mini-programs", "you need high-traffic architecture with MongoDB sharding, replica sets, and Kafka/Redis message queues", "you want combined performance monitoring, error tracking, and traffic analytics in one dashboard"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/zaneperfor", "repo": "wangweianger/zanePerfor", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "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.978733+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.978733+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:22:15.462516+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab298376b84859b0ae88a394749ce83ac38ba74f7d5c73583988e12006a95378", "fetched_at": "2026-08-28T04:05:37.978733+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wangweianger/zanePerfor"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2910, "days_push": 797, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}