{"adoption": {"forks": 1752, "observed_at": "2026-08-28T04:10:39.611966+00:00", "stars": 10127}, "canonical_url": "https://ross.abutalabs.com/products/hangfire", "card": {"archived": false, "artifact_type": "library", "description": "An easy way to perform background job processing in .NET and .NET Core applications. No Windows Service or separate process required", "domain": ["backend", "web-development", "developer-tools"], "enriched": true, "function": ["scheduling", "workflow-automation", "concurrency", "webhook", "middleware"], "health_score": 96, "homepage": "https://www.hangfire.io", "language": "C#", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["HangfireIO/Hangfire"], "name": "HangfireIO/Hangfire", "platform": ["dotnet", "windows", "cloud"], "pushed_at": "2026-07-20T12:19:41+00:00", "repo": "HangfireIO/Hangfire", "stars": 10127, "tags": ["background-jobs", "job-queue", "recurring-jobs", "cron", "fire-and-forget", "task-scheduler", "dashboard", "sidekiq-alternative", "celery-alternative", "dotnet-core", "automation", "linux", "macos", "docker"], "topics": ["dotnet", "dotnet-core", "background-jobs", "background-thread", "background-worker", "scheduled-jobs", "hangfire"], "urls": [], "use_cases": ["run background jobs in .NET applications", "schedule recurring cron tasks in ASP.NET Core", "send mass emails or newsletters asynchronously", "process batch imports from csv or json in the background", "replace Windows Service scheduled tasks with in-app job processing", "retry failed background tasks reliably", "monitor background job progress with a dashboard"], "what_it_is": "Hangfire is a .NET library for reliable background job processing, supporting fire-and-forget, delayed, and recurring (CRON) jobs with persistent storage backends like SQL Server and Redis. It includes a built-in dashboard UI and requires no Windows Service or separate process.", "when_to_avoid": ["you are not on the .NET platform", "you need distributed batch jobs with atomic grouping and continuations, which require the paid Hangfire Pro", "you need a lightweight in-memory task queue with no persistent storage dependency"], "when_to_choose": ["you need reliable, persistent background processing inside a .NET or .NET Core app without deploying a separate worker service", "you want fire-and-forget, delayed, and recurring jobs with a unified API and built-in monitoring dashboard", "you want a Sidekiq/Celery-style job system backed by SQL Server or Redis"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hangfire", "repo": "HangfireIO/Hangfire", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "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:10:39.611966+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:39.611966+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:19:42.722314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "087b812515c5dbe4c2030d4ca6ee64215811807863d2069434d757b6d8eb2071", "fetched_at": "2026-08-28T04:10:39.611966+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HangfireIO/Hangfire"}, {"content_hash": "c8aefb94ffc4c78a3333d64b1e1c372501e801845b6bceebe7eae2f8be0b8be7", "fetched_at": "2026-08-29T08:19:26.697364+00:00", "kind": "homepage", "missing": false, "url": "https://www.hangfire.io"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.728571+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/"}, {"content_hash": "575d6793e1dff2c7a16132e4fcd30f1fc30586497a706a7a33ce1e883b36fa3d", "fetched_at": "2026-08-29T08:19:26.730459+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io"}, {"content_hash": "3e583b987e1f1b408b51f37ea542bc8eb9ec4c0bf38569126fa36b3a42f5f2ad", "fetched_at": "2026-08-29T08:19:26.732126+00:00", "kind": "site_page", "missing": false, "url": "https://docs.hangfire.io/en/latest/getting-started/index.html"}, {"content_hash": "1ba254d28b697f52e4a8143d148c0bd2cd14901412b2c9703be8b618b4cac1a9", "fetched_at": "2026-08-29T08:19:26.725782+00:00", "kind": "site_page", "missing": false, "url": "https://www.hangfire.io/pricing"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 81}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4775, "days_push": 44, "days_rel": 48, "gap_med": 86, "n_releases_24m": 10}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}