{"adoption": {"forks": 231, "observed_at": "2026-08-28T04:07:46.638742+00:00", "stars": 3164}, "canonical_url": "https://ross.abutalabs.com/products/browserfs", "card": {"archived": false, "artifact_type": "library", "description": "BrowserFS is an in-browser filesystem that emulates the Node JS filesystem API and supports storing and retrieving files from various backends.", "domain": ["web-development", "frontend", "files"], "enriched": true, "function": ["file-system"], "health_score": 20, "homepage": null, "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "abandoned", "member_repos": ["jvilk/BrowserFS"], "name": "jvilk/BrowserFS", "platform": ["browser", "cross-platform"], "pushed_at": "2024-07-12T00:46:27+00:00", "repo": "jvilk/BrowserFS", "stars": 3164, "tags": ["in-browser-filesystem", "node-fs-api", "emscripten", "indexeddb", "localstorage", "dropbox-backend", "http-request-backend", "deprecated", "zenfs-fork", "nodejs"], "topics": [], "urls": [], "use_cases": ["access a filesystem from JavaScript running in the browser", "emulate the Node.js fs API in a web app", "store web app files in IndexedDB or localStorage", "read files on demand from a web server into the browser", "give an Emscripten/WebAssembly program a usable filesystem", "mount a user's Dropbox account as a filesystem in a web app", "run Node.js code that uses fs inside the browser"], "what_it_is": "BrowserFS is a TypeScript library that provides an in-browser filesystem emulating the Node.js fs API, with swappable backends such as HTTPRequest, LocalStorage, IndexedDB, and Dropbox, and integration with the Emscripten file system. The project was deprecated in March 2024 in favor of its active successor fork, ZenFS.", "when_to_avoid": ["you are starting a new project - use the actively maintained ZenFS fork instead", "you need bug fixes, security patches, or new backends, since upstream development has stopped", "you are writing server-side Node.js code, where the native fs module is the right choice"], "when_to_choose": ["you maintain an existing project already built on the browserfs npm package and cannot migrate yet", "you need the exact legacy BrowserFS backend behavior in an archived or pinned Emscripten build"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/browserfs", "repo": "jvilk/BrowserFS", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "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:07:46.638742+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:46.638742+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:45:32.165107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "77ec010eca77e480dd168a117005aef32dbdbf588fdf6647ffdf9c884962b6eb", "fetched_at": "2026-08-28T04:07:46.638742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jvilk/BrowserFS"}, {"content_hash": "d5b6642c1b7b261ce30088ce815d06e2c1c0d300a8337fbe3a03e20ab688e202", "fetched_at": "2026-08-29T09:39:59.381991+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/browserfs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4885, "days_push": 783, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}