{"adoption": {"forks": 608, "observed_at": "2026-08-28T04:08:55.160225+00:00", "stars": 4620}, "canonical_url": "https://ross.abutalabs.com/products/hellojs", "card": {"archived": false, "artifact_type": "library", "description": "A Javascript RESTFUL API library for connecting with OAuth2 services, such as Google+ API, Facebook Graph and Windows Live Connect", "domain": ["web-development", "frontend", "apis", "security"], "enriched": true, "function": ["auth", "http-client", "sdk"], "health_score": 74, "homepage": "https://adodson.com/hello.js/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["MrSwitch/hello.js"], "name": "MrSwitch/hello.js", "platform": ["browser"], "pushed_at": "2026-01-12T22:55:22+00:00", "repo": "MrSwitch/hello.js", "stars": 4620, "tags": ["oauth2", "oauth", "social-login", "client-side", "rest-api", "single-sign-on", "javascript", "nodejs"], "topics": [], "urls": [], "use_cases": ["add social login with Google, Facebook, or Microsoft to a web app", "fetch a user's profile and contacts from OAuth providers", "upload photos or post status updates to social networks from the browser", "standardize OAuth2 authentication flows across multiple providers", "query REST APIs of social platforms with a unified interface"], "what_it_is": "hello.js is a client-side JavaScript SDK for authenticating with OAuth2 (and OAuth1 via a proxy) web services and querying their REST APIs. It standardizes paths and responses across providers like Google, Facebook, and Windows Live Connect through a modular architecture.", "when_to_avoid": ["you need server-side or backend OAuth flows rather than browser-based authentication", "you only target a single provider and prefer its official first-party SDK", "you need modern, actively developed auth tooling - the project is in maintenance with a rewrite still in progress"], "when_to_choose": ["you need client-side OAuth2 sign-in with multiple social providers in a browser app", "you want a unified, normalized API for several social networks instead of per-provider SDKs", "you need a lightweight, modular JavaScript library for social authentication"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hellojs", "repo": "MrSwitch/hello.js", "role": "main", "score": 71}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "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:08:55.160225+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.160225+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:39.407475+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "63500f47d36dfb88728a19d0e52de7e45bbcb795ba5688f56a91e8e64a507986", "fetched_at": "2026-08-28T04:08:55.160225+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MrSwitch/hello.js"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 62, "longevity": 100, "rhythm": 65}, "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": 5481, "days_push": 233, "days_rel": 233, "gap_med": 2.0, "n_releases_24m": 5}, "score": 71, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}