{"adoption": {"forks": 42, "observed_at": "2026-09-03T02:15:18.559582+00:00", "stars": 1003}, "canonical_url": "https://ross.abutalabs.com/products/retrosheet", "card": {"archived": false, "artifact_type": "library", "description": "📃 Turn Google Spreadsheet to JSON endpoint (without any login/auth). Supported Platforms: Android, iOS, JVM and JS. Thanks to Kotlin Multiplatform 🙏🏼", "domain": ["developer-tools", "apis", "backend", "mobile-development", "cross-platform"], "enriched": true, "function": ["http-client", "serialization", "sdk"], "health_score": 70, "homepage": "https://a64.in/retrosheet/wizard", "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["theapache64/retrosheet"], "name": "theapache64/retrosheet", "platform": ["jvm", "cross-platform"], "pushed_at": "2025-12-29T18:29:40+00:00", "repo": "theapache64/retrosheet", "stars": 1003, "tags": ["google-sheets", "retrofit", "okhttp", "ktor", "json-endpoint", "kotlin-multiplatform", "mvp-backend", "no-auth", "android", "ios"], "topics": ["retrofit", "okhttp", "interceptors", "google-sheets", "rest-api"], "urls": [], "use_cases": ["use google sheets as a free backend for my app", "build an MVP without setting up a server", "read and write data to a spreadsheet as JSON from Android", "quickly prototype an app with a spreadsheet database", "submit form data to google sheets from mobile app", "swap spreadsheet backend for a real REST API later"], "what_it_is": "A Kotlin Multiplatform library that turns Google Spreadsheets into JSON API endpoints, letting apps read and write data through Google Sheets without any backend or authentication setup. It integrates as an HTTP client plugin (OkHttp/Ktor interceptor) so switching to a real REST API later requires minimal code changes.", "when_to_avoid": ["production apps needing reliable, scalable, secure backends", "apps requiring authentication, complex queries, or transactions", "high-traffic workloads where Google Sheets rate limits apply", "non-Kotlin projects without JVM/JS runtimes"], "when_to_choose": ["prototyping an MVP or POC that needs a quick free backend", "you want a real-time editable data interface via Google Sheets", "building Kotlin Multiplatform apps on Android, iOS, JVM, or JS", "you want free analytics via Google Forms submissions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/retrosheet", "repo": "theapache64/retrosheet", "role": "main", "score": 61}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.559582+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:13:55.726341+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e57e3758388157ccb3de36b37bda413ee26e6ddac2c4328d7e74c4b195811d9a", "fetched_at": "2026-09-03T02:15:18.559582+00:00", "kind": "readme", "missing": false, "url": "https://github.com/theapache64/retrosheet"}, {"content_hash": "5ca206f34d2b97ee822ecf9de381a3e99a825099a7510573d7b0ff1259304771", "fetched_at": "2026-08-29T13:13:44.776835+00:00", "kind": "homepage", "missing": false, "url": "https://a64.in/retrosheet/wizard"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 59, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2235, "days_push": 247, "days_rel": 401, "gap_med": 12, "n_releases_24m": 6}, "score": 61, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}