{"adoption": {"forks": 382, "observed_at": "2026-08-28T04:06:25.905987+00:00", "stars": 2204}, "canonical_url": "https://ross.abutalabs.com/products/rpush", "card": {"archived": false, "artifact_type": "library", "description": "The push notification service for Ruby.", "domain": ["mobile-development", "web-development", "backend", "developer-tools"], "enriched": true, "function": ["webhook", "sdk", "middleware"], "health_score": 47, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["rpush/rpush"], "name": "rpush/rpush", "platform": ["ruby"], "pushed_at": "2025-07-01T20:01:10+00:00", "repo": "rpush/rpush", "stars": 2204, "tags": ["push-notifications", "apns", "fcm", "webpush", "wns", "notification-service", "daemon", "background-jobs", "rails"], "topics": ["notification-service", "firebase-cloud-messaging", "ruby", "notifications", "apns", "rpush", "fcm", "pushy", "apns2", "windows-phone", "wns", "rails", "hacktoberfest", "push-notifications", "webpush"], "urls": [], "use_cases": ["send push notifications to iOS devices via APNs from a Rails app", "deliver Firebase Cloud Messaging notifications to Android users", "send web push notifications to browsers", "run a background daemon that processes notification queues", "track notification delivery errors with Sentry or Bugsnag plugins", "scale push notification delivery across multiple processes"], "what_it_is": "Rpush is a Ruby gem for sending push notifications across multiple services including APNs, Firebase Cloud Messaging, Webpush, Pushy, Amazon ADM, and Windows Phone WNS. It supports ActiveRecord or Redis storage, Rails integration, daemon or embedded execution, and plugin-based monitoring.", "when_to_avoid": ["you are not using Ruby", "you only need simple one-off notifications without persistence", "you need a language-agnostic push service outside your app process"], "when_to_choose": ["your Ruby or Rails app needs multi-service push notification delivery", "you want ActiveRecord or Redis-backed notification persistence and retries", "you need a battle-tested gem with monitoring plugins and reflection hooks"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rpush", "repo": "rpush/rpush", "role": "main", "score": 47}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "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:25.905987+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.905987+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:46:44.477288+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ded4325751db3f09012702babbecfe5e2c7be9a32738a189ff0943ea91765ecc", "fetched_at": "2026-08-28T04:06:25.905987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rpush/rpush"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 29, "longevity": 100, "rhythm": 40}, "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": 4991, "days_push": 428, "days_rel": 708, "gap_med": 2, "n_releases_24m": 4}, "score": 47, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}