{"adoption": {"forks": 106, "observed_at": "2026-08-28T04:06:43.875071+00:00", "stars": 2402}, "canonical_url": "https://ross.abutalabs.com/products/palmr", "card": {"archived": true, "artifact_type": "application", "description": "🌴 Palmr. is an open-source file-sharing platform focused on privacy and security. It enables users to upload, manage, and share files with features like password protection, custom links, and access control without tracking or limitations. Designed for seamless and secure sharing, Palmr. is completely free.", "domain": ["files", "self-hosted", "web-development", "privacy", "developer-tools"], "enriched": true, "function": ["file-upload", "http-server", "web-framework", "self-hosted"], "health_score": 10, "homepage": null, "language": "TypeScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["kyantech/Palmr"], "name": "kyantech/Palmr", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-02-27T14:10:08+00:00", "repo": "kyantech/Palmr", "stars": 2402, "tags": ["file-sharing", "wetransfer-alternative", "nextjs", "fastify", "sqlite", "s3-compatible", "password-protection", "archived", "web-server", "docker", "nodejs"], "topics": ["fastify", "file-sharing", "self-hosted", "typescript", "nextjs"], "urls": [], "use_cases": ["self-host a WeTransfer alternative for sending large files", "share files with password-protected links on my own server", "organize uploads into folders and share them with access control", "host a private file transfer service without size limits or tracking", "store shared files on S3-compatible object storage instead of local disk"], "what_it_is": "Palmr. is an open-source, self-hosted file-sharing platform serving as an alternative to services like WeTransfer. It lets users upload, organize, and share files with password protection, custom links, and access control, using a Fastify backend, SQLite storage, and a Next.js frontend.", "when_to_avoid": ["you need actively maintained software - the project has been archived by its author", "you need production-grade guarantees - it was still in beta when archived", "you need enterprise features like team management or audit logs"], "when_to_choose": ["you want a free, self-hosted alternative to WeTransfer-style services", "privacy matters and you need full control over your file-sharing data", "you want simple deployment with SQLite and filesystem storage, or optional S3 scaling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/palmr", "repo": "kyantech/Palmr", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "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:43.875071+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.875071+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.292672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70ab27391cbafae5c1913678625006eaab92ac02ad1894aacc2c1e6e2d32f15b", "fetched_at": "2026-08-28T04:06:43.875071+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kyantech/Palmr"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 69, "longevity": 40, "rhythm": 60}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 565, "days_push": 187, "days_rel": 266, "gap_med": 2.0, "n_releases_24m": 41}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}