{"adoption": {"forks": 356, "observed_at": "2026-08-28T04:06:01.972784+00:00", "stars": 1985}, "canonical_url": "https://ross.abutalabs.com/products/projectsend", "card": {"archived": false, "artifact_type": "application", "description": "ProjectSend is a free, open source software that lets you share files with your clients, focused on ease of use and privacy. It supports clients groups, system users roles, statistics, multiple languages, detailed logs... and much more!", "domain": ["self-hosted", "files", "privacy", "web-development"], "enriched": true, "function": ["file-upload", "web-framework", "auth", "api-framework"], "health_score": 100, "homepage": "https://www.projectsend.org/", "language": "PHP", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["projectsend/projectsend"], "name": "projectsend/projectsend", "platform": ["self-hosted", "php"], "pushed_at": "2026-08-26T21:00:23+00:00", "repo": "projectsend/projectsend", "stars": 1985, "tags": ["client-portal", "file-sharing", "document-sharing", "client-management", "s3-storage", "gdpr", "rest-api", "web-server", "docker"], "topics": ["projectsend", "file-sharing", "clients-oriented", "php", "free-software", "open-source", "self-hosted", "business-tools", "client-portal", "document-sharing", "file-management", "file-upload", "mysql", "s3-storage", "selfhosted", "web-application"], "urls": [], "use_cases": ["share files with clients from my own server instead of Dropbox", "self-hosted client portal for document delivery", "send large files to clients with resumable uploads", "give each client a private page to download their files", "replace email attachments with a private file sharing site", "manage client file sharing with groups, quotas and download limits", "GDPR-friendly file sharing with account erasure"], "what_it_is": "ProjectSend is a free, open-source, self-hosted web application for sharing files privately with clients, partners, and teams. Each client gets a private portal to download files shared with them, while administrators manage uploads, groups, permissions, quotas, and activity logs from their own server.", "when_to_avoid": ["you need simple anonymous public file links without client accounts", "you want a lightweight peer-to-peer or one-off transfer tool like a WeTransfer clone", "you cannot run a PHP/MySQL web server or Docker container"], "when_to_choose": ["you need clients to access files through their own private login portal", "you want full control and privacy over where files are stored (local disk, S3, GCS)", "you need client groups, roles, quotas, expiry dates and download limits", "you want a mature, free alternative to per-seat SaaS file sharing tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/projectsend", "repo": "projectsend/projectsend", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "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:06:01.972784+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.972784+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:03:17.915898+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5bdee148f77c6318f64f722a28f4bfbf2768241ae831b77f0c5f0c5ca7867b6", "fetched_at": "2026-08-28T04:06:01.972784+00:00", "kind": "readme", "missing": false, "url": "https://github.com/projectsend/projectsend"}, {"content_hash": "16a9a62b96648dbd84cb3e84957d77dd57751fbde3de746c9418cefc38c46076", "fetched_at": "2026-08-29T10:43:04.469404+00:00", "kind": "homepage", "missing": false, "url": "https://www.projectsend.org/"}, {"content_hash": "46fa79686d43a6e9c1a6bed6d42164b0e381d1fb9165578fbc27c48804d6a117", "fetched_at": "2026-08-29T10:43:04.489985+00:00", "kind": "site_page", "missing": false, "url": "https://docs.projectsend.org"}, {"content_hash": "2e93b58acfc493d74fc657446ad2450ed8802f04d17bbec439cf829745993d84", "fetched_at": "2026-08-29T10:43:04.487862+00:00", "kind": "site_page", "missing": false, "url": "https://www.projectsend.org/changelog/v2.2.1"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 98}, "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": 4557, "days_push": 7, "days_rel": 15, "gap_med": 4, "n_releases_24m": 2}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}