{"adoption": {"forks": 45, "observed_at": "2026-08-28T04:04:36.828328+00:00", "stars": 1398}, "canonical_url": "https://ross.abutalabs.com/products/remote-storage", "card": {"archived": false, "artifact_type": "library", "description": "remoteStorage is a simple library that combines the localStorage API with a remote server to persist data across sessions, devices, and browsers. It works as a simple key value database store and backend with support for React, Next.js, Vue, Node, or any Javascript stack", "domain": ["web-development", "frontend", "backend", "developer-tools"], "enriched": true, "function": ["caching", "database", "http-client"], "health_score": 26, "homepage": "https://remote.storage", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["FrigadeHQ/remote-storage"], "name": "FrigadeHQ/remote-storage", "platform": ["browser"], "pushed_at": "2024-03-27T00:36:02+00:00", "repo": "FrigadeHQ/remote-storage", "stars": 1398, "tags": ["localstorage", "key-value-store", "cross-device-sync", "typescript", "react", "nextjs", "vue", "jwt", "user-preferences", "nodejs", "web-server", "javascript"], "topics": ["caching", "database", "javascript", "keyvalue", "keyvalue-db", "localstorage", "web", "backend", "local-storage", "nextjs", "remote-storage", "preferences-datastore", "settings-storage"], "urls": [], "use_cases": ["persist user preferences across devices and browsers", "show a welcome modal only once per user regardless of device", "sync feature flags and user flags between browser sessions", "replace localStorage with a remote-backed key-value store", "store app settings server-side without building a backend", "share lightweight state between web and Node clients"], "what_it_is": "remoteStorage is a lightweight (~1 kB) TypeScript library that mirrors the localStorage API but persists key-value data on a remote server, so state survives across browsers, devices, and sessions. It includes built-in JWT-based auth, works with any JavaScript stack (React, Next.js, Vue, Node), and ships with an open-source server plus a free hosted community server.", "when_to_avoid": ["you need relational queries, indexing, or large datasets rather than simple key-value pairs", "you require strong consistency or offline-first conflict resolution", "you're storing sensitive data that shouldn't live on a third-party or simple remote server", "you need high-throughput server-side storage rather than lightweight client preferences"], "when_to_choose": ["you want a localStorage-like API but data must follow users across devices or browsers", "you need a tiny dependency for simple key-value persistence without a full database", "you want self-hostable storage with JWT auth and an MIT license", "you're tracking one-time UI states like seen-modals or dismissed banners per user"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/remote-storage", "repo": "FrigadeHQ/remote-storage", "role": "main", "score": 17}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "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:36.828328+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.828328+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:39:12.076936+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6c164339da5cd2446d0914a11d29022c076defed08bf53237334ec5a123699d7", "fetched_at": "2026-08-28T04:04:36.828328+00:00", "kind": "readme", "missing": false, "url": "https://github.com/FrigadeHQ/remote-storage"}, {"content_hash": "11de55495898d608f08889aa1f1257f10af01bf818fe7b3079fb3252f9c40c02", "fetched_at": "2026-08-29T11:53:43.272944+00:00", "kind": "homepage", "missing": false, "url": "https://remote.storage"}, {"content_hash": "88390c1643e6b0bc1fe87c57be6318817d818cd32ce940faeb133f387350dcb6", "fetched_at": "2026-08-29T11:53:43.281984+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/remote-storage"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 70, "rhythm": 8}, "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": 984, "days_push": 890, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 17, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}