{"adoption": {"forks": 367, "observed_at": "2026-08-28T04:05:39.253488+00:00", "stars": 1812}, "canonical_url": "https://ross.abutalabs.com/products/9drive", "card": {"archived": false, "artifact_type": "application", "description": "9Drive is a storage gateway web app for connecting multiple Google Drive accounts into one virtual storage dashboard. Users can connect Google Drive accounts, track quota, upload files, organize files with virtual folders, preview files, and let the backend route uploads to the Drive account with enough free space.", "domain": ["self-hosted", "files", "web-development", "cloud-computing"], "enriched": true, "function": ["file-upload", "web-framework", "auth", "api-framework", "http-server", "proxy"], "health_score": 80, "homepage": "https://9drive.zenhosta.com", "language": "TypeScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["zenhosta/9drive"], "name": "zenhosta/9drive", "platform": ["self-hosted"], "pushed_at": "2026-08-25T03:56:59+00:00", "repo": "zenhosta/9drive", "stars": 1812, "tags": ["google-drive", "storage-gateway", "s3-compatible", "multi-account", "quota-tracking", "virtual-folders", "upload-routing", "react", "express", "prisma", "nodejs", "web-server", "docker", "typescript"], "topics": ["drive", "gateway", "storage", "proxy"], "urls": [], "use_cases": ["pool multiple google drive accounts into one dashboard", "route uploads to whichever drive account has free space", "self-host a personal cloud storage gateway", "upload files to s3-compatible storage without exposing credentials", "track storage quota across several drive accounts", "organize drive files with virtual folders", "accept file uploads via api key from external apps"], "what_it_is": "9Drive is a self-hosted storage gateway web app that unifies multiple Google Drive accounts (and S3-compatible providers) into one virtual storage dashboard. It routes uploads to the account with sufficient free space, tracks quotas, and offers virtual folders, file previews, and an external upload API.", "when_to_avoid": ["you need storage providers other than Google Drive and S3-compatible endpoints", "you want fully serverless hosting - it requires Node.js 20+, MySQL, and PM2", "you need offline or desktop-only file management", "you require enterprise-grade compliance or audit features"], "when_to_choose": ["you have several Google Drive accounts and want them as one virtual storage pool", "you want a self-hosted dashboard with upload routing policies (most-available, round-robin, priority)", "you need an external upload API with hashed, revocable API keys", "you use S3-compatible providers like MinIO, R2, Wasabi, or B2 alongside Drive"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/9drive", "repo": "zenhosta/9drive", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "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:05:39.253488+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.253488+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:21:14.096937+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f6bcc73895cbd4cf970602799453292c6825cc255a52bcd59c0fa8f1e7bd43a0", "fetched_at": "2026-08-28T04:05:39.253488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zenhosta/9drive"}, {"content_hash": "cf4615c0a3ff29d3b8326d9201bf49f79c1072c506c71e384b1c3672a525319e", "fetched_at": "2026-08-29T11:00:05.033044+00:00", "kind": "homepage", "missing": false, "url": "https://9drive.zenhosta.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 6, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 90, "days_push": 8, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}