{"adoption": {"forks": 209, "observed_at": "2026-08-28T04:04:58.449413+00:00", "stars": 1527}, "canonical_url": "https://ross.abutalabs.com/products/react-google-apps-script", "card": {"archived": false, "artifact_type": "learning-resource", "description": "This is your boilerplate project for developing React apps inside Google Sheets, Docs, Forms and Slides projects. It's perfect for personal projects and for publishing complex add-ons in the Google Workspace Marketplace.", "domain": ["web-development", "frontend", "developer-tools"], "enriched": true, "function": ["frontend-framework", "build-tool", "templating", "developer-tools"], "health_score": 60, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["enuchi/React-Google-Apps-Script"], "name": "enuchi/React-Google-Apps-Script", "platform": [], "pushed_at": "2026-02-14T10:07:44+00:00", "repo": "enuchi/React-Google-Apps-Script", "stars": 1527, "tags": ["react", "google-apps-script", "google-workspace", "boilerplate", "vite", "add-ons", "starter-template", "google-sheets", "google-docs", "boilerplate", "automation", "web-server", "nodejs", "javascript"], "topics": [], "urls": [], "use_cases": ["build a react app inside google sheets dialogs", "create a google workspace marketplace add-on", "develop custom sidebars for google docs with react", "boilerplate for google apps script projects", "connect a react frontend to apps script server-side functions", "deploy react ui to google forms and slides"], "what_it_is": "A boilerplate/starter template for building React apps that run inside Google Sheets, Docs, Forms, and Slides via Google Apps Script dialogs and sidebars. It uses React 18 and Vite and supports deploying add-ons to the Google Workspace Marketplace.", "when_to_avoid": ["you are building a standalone web app not tied to Google Workspace", "you prefer Vue, Svelte, or plain HTML dialogs without React", "you need server-side-only Apps Script automation with no user interface"], "when_to_choose": ["you want a modern React + Vite toolchain for Google Apps Script UIs", "you plan to publish a complex add-on to the Google Workspace Marketplace", "you need a maintained starter with sample client-server communication code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/react-google-apps-script", "repo": "enuchi/React-Google-Apps-Script", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "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:04:58.449413+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.449413+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:32:45.775802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0cb7069e9fb5d69619218ba16132a8d107ffe7e09f94caa456c5a5a83e214fb7", "fetched_at": "2026-08-28T04:04:58.449413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enuchi/React-Google-Apps-Script"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 67, "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": 2912, "days_push": 200, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}