Categories
self-hosted docker rest-api file-sharing client-portal document-sharing secure-file-transfer file-managementStars
Forks
Watchers
Developer links
ProjectSend
ProjectSend gives every client a private, signed-in page on your own server where only the files you assigned to them appear, so contracts, photo shoots, and quarterly reports skip the third-party file-sharing service. You upload once, then share a file or a whole folder with one client, a group, or anyone holding a public link, with an optional expiry date or download limit. Clients search, preview, and download files one by one or as a zip, whole folders included, comment on a document so questions stay beside it, and send files back within the quota you set. Uploads of up to 2 GB travel in resumable pieces, so a dropped connection pauses a transfer instead of ruining it. Folders, categories, custom client fields, and linked file versions keep a growing library tidy, while roles with granular permissions let staff work without becoming administrators. The activity log and download history record who received what and when, and the log exports to CSV. Sign-in works with email and password, LDAP, or Google and Microsoft accounts, with optional two-factor authentication. Your logo, watermark, themes, and editable email templates carry your brand, and the interface is translated into 16 languages. Optional virus scanning quarantines suspicious uploads, and a REST API with scoped tokens automates uploads, sharing, and account management. Running on a dedicated VPS on RepoCloud with guaranteed CPU, RAM, and SSD, full root SSH access, and a browser serial console. GPL-2.0-or-later licensed.
Benefits
- Every Client Gets A Private Page
- Clients sign in to a portal listing only what you assigned to them; files and whole folders go to one client or a group, and files expire by date or download count.
- Large Uploads Survive Dropped Connections
- Files up to 2 GB upload in resumable chunks you can pause, and an interrupted transfer picks up where it left off instead of restarting from zero.
- A Record Of Every Download
- The activity log records uploads, assignments, and downloads with timestamps, filters by action, account, or date range, and exports to CSV when a client asks whether a file arrived.
- No Per-Seat Pricing For Clients
- Invite as many clients as you need: self-hosting is free under the GPL with no per-seat pricing, and you decide the storage quota each client gets.
Features
- Granular Sharing Controls
- Share files or folders with one client or a group, or publish a public link, with expiry dates, download limits, comments, and linked versions that mark older uploads Outdated.
- Flexible Sign-In and Roles
- Email and password, LDAP through LdapRecord, and Google, Microsoft, or OpenID Connect single sign-on, plus optional two-factor authentication and custom roles with granular permissions.
- Storage and Virus Scanning
- Keep files on local disk, S3-compatible storage such as MinIO or Backblaze B2, or Google Cloud Storage, and optionally scan uploads with a ClamAV daemon before anyone downloads them.
- REST API With OpenAPI
- A versioned JSON API at /api/v1 uses scoped bearer tokens, per-token rate limits, and RFC 7807 errors, with the OpenAPI specification served at /api/v1/openapi.json.
- Laravel and React Stack
- Laravel 12 on PHP 8.4 serves an Inertia and React 19 interface styled with Tailwind CSS 4, backed by MySQL 8.4 and optional Redis for sessions, cache, and queues.
- Docker Install and Updates
- The projectsend/projectsend image ships compiled, a compose file adds MySQL 8.4 and Redis 7, a setup screen creates the administrator, and a built-in update check announces new releases.