{"adoption": {"forks": 240, "observed_at": "2026-08-28T04:06:44.154774+00:00", "stars": 2406}, "canonical_url": "https://ross.abutalabs.com/products/later", "card": {"archived": false, "artifact_type": "library", "description": "A javascript library for defining recurring schedules and calculating future (or past) occurrences for them.  Includes support for using English phrases and Cron schedules.  Works in Node and in the browser.", "domain": ["developer-tools"], "enriched": true, "function": ["scheduling", "parser", "date-time"], "health_score": 20, "homepage": "http://bunkat.github.io/later/", "language": "HTML", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["bunkat/later"], "name": "bunkat/later", "platform": ["browser", "cross-platform"], "pushed_at": "2018-04-10T16:05:03+00:00", "repo": "bunkat/later", "stars": 2406, "tags": ["recurring-schedules", "cron", "schedule-parser", "no-dependencies", "unmaintained", "automation", "algorithms", "nodejs", "javascript"], "topics": [], "urls": [], "use_cases": ["calculate next occurrences of a recurring schedule in javascript", "parse cron expressions and compute future run times", "define schedules like '2nd Tuesday of every month at 4am'", "convert english phrases like 'every 5 mins' into schedules", "compute past occurrences of a recurring event", "build composite schedules with exceptions in node or browser"], "what_it_is": "Later is a zero-dependency JavaScript library for defining recurring schedules and calculating their future or past occurrences. Schedules can be built via a chainable API, Cron expressions, or English text expressions, and work in both Node and the browser.", "when_to_avoid": ["you just need to run tasks on a timer - use a cron scheduler or job runner instead", "you need a maintained library with active bug fixes and security updates", "you need timezone-aware scheduling", "your project requires long-term support"], "when_to_choose": ["you need to compute occurrences of complex recurring schedules (not fire them)", "you want cron parsing plus flexible constraints like nth weekday or month exceptions", "you need a small, dependency-free library that works in Node and the browser", "you need serializable schedule definitions to store in a database"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/later", "repo": "bunkat/later", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "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:44.154774+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.154774+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:06.351546+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccbfaf01aeda42a4cc7628c922969a298daaca74ad1fc6c3270d0afa9a7b474", "fetched_at": "2026-08-28T04:06:44.154774+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bunkat/later"}, {"content_hash": "e74bc8ee2fbea856821e7693789986a86a0f06ab1d827644b6ed05d21fe993bb", "fetched_at": "2026-08-29T10:14:20.305656+00:00", "kind": "homepage", "missing": false, "url": "http://bunkat.github.io/later/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5320, "days_push": 3067, "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}}