{"adoption": {"forks": 147, "observed_at": "2026-08-28T04:05:59.299477+00:00", "stars": 1959}, "canonical_url": "https://ross.abutalabs.com/products/gologin", "card": {"archived": false, "artifact_type": "library", "description": "Go login handlers for authentication providers (OAuth1, OAuth2)", "domain": ["web-development", "backend", "security", "apis"], "enriched": true, "function": ["auth", "http-server", "middleware"], "health_score": 84, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["dghubble/gologin"], "name": "dghubble/gologin", "platform": ["go"], "pushed_at": "2026-08-19T13:42:55+00:00", "repo": "dghubble/gologin", "stars": 1959, "tags": ["oauth1", "oauth2", "social-login", "http-handlers", "authentication-providers", "web-server"], "topics": [], "urls": [], "use_cases": ["add google sign-in to a go web app", "implement github oauth login in go", "handle twitter oauth1 login flow", "support facebook login on a website", "add oauth2 login with csrf state protection", "handle native mobile app token logins in go", "chain custom success and failure handlers after social login"], "what_it_is": "gologin is a Go library providing chainable http.Handler implementations for login flows with OAuth1 and OAuth2 providers like Google, GitHub, Twitter, and Facebook. It supports web login flows via LoginHandler/CallbackHandler and mobile token flows via TokenHandler, passing authenticated users or tokens through the request context.", "when_to_avoid": ["you need full user management with sessions, passwords, and registration (use an auth framework like authboss or Ory)", "your app is not written in Go", "you need OpenID Connect-specific features beyond plain OAuth2", "you want a hosted or turnkey authentication service"], "when_to_choose": ["you need social/OAuth login in a Go web server with composable http.Handler middleware", "you want support for both OAuth1 and OAuth2 providers in one library", "you need configurable CSRF state handling for OAuth2 flows", "you want lightweight handlers that integrate with net/http rather than a full auth framework"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gologin", "repo": "dghubble/gologin", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "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:59.299477+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:59.299477+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:05:58.434204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d17c56c38cb91bf0ec6156bd7581fb29d469fe9b614fc3a48787abc4317a72e", "fetched_at": "2026-08-28T04:05:59.299477+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dghubble/gologin"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4089, "days_push": 14, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}