{"adoption": {"forks": 57, "observed_at": "2026-08-28T04:06:33.967658+00:00", "stars": 2284}, "canonical_url": "https://ross.abutalabs.com/products/astroturf", "card": {"archived": false, "artifact_type": "library", "description": "Better Styling through Compiling: CSS-in-JS for those that want it all.", "domain": ["web-development", "frontend", "web-design"], "enriched": true, "function": ["css-framework", "build-tool", "templating"], "health_score": 20, "homepage": "https://astroturfcss.github.io/astroturf/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["astroturfcss/astroturf"], "name": "astroturfcss/astroturf", "platform": ["cross-platform"], "pushed_at": "2023-12-19T09:33:10+00:00", "repo": "astroturfcss/astroturf", "stars": 2284, "tags": ["css-in-js", "zero-runtime", "static-css", "sass", "postcss", "less", "component-styling", "webpack", "nodejs", "web-server"], "topics": ["css", "astroturf"], "urls": [], "use_cases": ["write css-in-js without runtime overhead", "keep component styles in the same file as the component", "use sass or postcss with css-in-js", "extract static css from javascript components", "style react components with zero runtime", "integrate existing css tooling with component-scoped styles"], "what_it_is": "Astroturf is a zero-runtime CSS-in-JS library that lets you write CSS in template literals inside your JavaScript files while keeping styles fully static. It compiles styles through your existing CSS pipeline (Sass, PostCSS, Less) at build time with no runtime style parsing.", "when_to_avoid": ["you need fully dynamic runtime theming or style computation", "your project uses a framework or bundler without astroturf loader support", "you want a large ecosystem of styling primitives like styled-system", "the project appears to be in maintenance mode with infrequent releases"], "when_to_choose": ["you want css-in-js ergonomics but static, extractable CSS files", "you already have a Sass/PostCSS/Less pipeline you want to keep", "runtime style injection is unacceptable for performance or CSP reasons", "you prefer colocating styles with components over separate CSS files"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/astroturf", "repo": "astroturfcss/astroturf", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "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:33.967658+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.967658+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:41:05.785549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c3096c60ec623f6f1b6fbb74e43c81b59ff5d70deba8b47bd2a44030e94f524", "fetched_at": "2026-08-28T04:06:33.967658+00:00", "kind": "readme", "missing": false, "url": "https://github.com/astroturfcss/astroturf"}, {"content_hash": "f5e9694a3067019b6e57c311f51264844c37f4eed09f4695e80b1e2f92c8388e", "fetched_at": "2026-08-29T10:21:43.782374+00:00", "kind": "homepage", "missing": false, "url": "https://astroturfcss.github.io/astroturf/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3606, "days_push": 988, "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}}