ClientShare is a secure, branded client portal for teams that need a better way to send files, collect uploads, and keep sensitive document exchange out of email threads.
ClientShare prioritizes self-hosted deployments, with sensible defaults for small firms and room to grow into more advanced hosted setups. Out of the box, it gives you a private portal for sharing files, requesting documents, managing access, and presenting a more professional client experience.
- Keep client files in one place instead of scattered across inboxes and shared links.
- Give clients a clean upload and download experience with branded portal settings.
- Control access with users, roles, permissions, and secure links.
- Start with SQLite and local storage, then move to Postgres, MySQL, or S3-compatible storage when needed.
- Run it yourself without stitching together separate tools for auth, file exchange, and portal UX.
- Secure client portal for sending files and collecting uploads
- Expiring secure links for controlled external access
- User and role-based access control
- Client, folder, and file organization
- Email-driven workflows for invites and password resets
- Branding controls for site title, logo, and primary color
- Local-first self-hosting defaults with optional hosted-oriented tenancy mode
- Vue frontend bundled into the Go app for a single deployable service
- Docker
- Docker Compose
mkdir clientshare
cd clientshare
mkdir config data storage
wget https://raw.githubusercontent.com/pixelcop/clientshare/refs/heads/main/docker/docker-compose.yml
wget https://raw.githubusercontent.com/pixelcop/clientshare/refs/heads/main/config/config.yaml.sample -O config/config.yamlUpdate these values in config/config.yaml:
auth.jwt_secretauth.invite_token_secretsecure_links.signing_keyadmin.bootstrap_emailadmin.bootstrap_password
The sample config defaults to:
- single-tenant mode
- SQLite
- local file storage
docker compose up -dRun this from the repository root so Docker uses docker-compose.yml. The container mounts your local config, data, and storage directories, so configuration, database files, and uploads persist on the host.
Open http://localhost:8080.
- Go
- Bun
- GNU Make
- A C toolchain with SQLite development headers for local Go builds
Build frontend and backend components:
make build-web buildThis produces the main server binary plus the migration and import tools:
clientsharegooseimportclients
make build-dockerThis uses docker/Dockerfile to build the frontend, generate email templates, compile the Go binaries, and package the runtime image.
make runmake run-webWith dev_mode: true, the Go app can proxy to the Vite dev server during development.
make test
make test-web
make test-allmake migrate
make migrate-down
make migrate-create name=add_featureMost runtime settings live in config/config.yaml.sample.
Useful defaults and options include:
tenancy.mode:singleorhosteddatabase.driver:sqlite,postgres, ormysqlstorage.type: local filesystem or S3-compatible object storagebranding: site title, logo path, and primary colorinternal_api: disabled by default for self-hosted installs
For local development overrides, see docs/env.md.
- Go backend
- Fiber web server
- GORM models and Goose-style migrations
- Vue 3 frontend with Vite
- SQLite by default for the easiest self-hosted setup
- cmd entrypoints for the server and import tools
- internal/handlers HTTP handlers and route registration
- internal/services business logic and supporting services
- internal/models application models
- internal/database/migrations schema migrations
- web Vue frontend
- public static assets
ClientShare defaults to a simple self-hosted setup:
- SQLite database
- local storage under
./storage - bundled frontend served by the Go application
For more advanced deployments, you can switch to Postgres or MySQL, use S3-compatible storage, and enable hosted-oriented tenancy features when needed.
ClientShare is an active open-source project focused on secure client document exchange and self-hosted deployments.
If you need a branded client portal for file requests, sensitive uploads, or recurring document handoff, this repo is the place to start.
AGPL, Copyright (C) 2026 Pixelcop Research, Inc.