Skip to content

7ito/clipset

Repository files navigation

Clipset

Clipset is a private, self-hosted video sharing app for small communities.

It supports invitation-only accounts, uploads with admin-controlled quotas, background transcoding, progressive MP4 playback, and HLS playback with short-lived playback tokens plus nginx-signed segment URLs.

What It Does Today

  • Private, invitation-only access
  • Initial admin bootstrap on an empty install
  • Manual password recovery through admin-generated reset links
  • Authenticated password changes for signed-in users
  • Manual, admin-driven weekly quota resets
  • Admin settings for upload limits and transcoding behavior
  • Progressive MP4 and HLS playback depending on what exists for a video

Quick Start

git clone <your-fork-or-local-clone>
cd clipset
cp .env.example .env

# Generate secrets and place them in .env
openssl rand -base64 32  # JWT_SECRET
openssl rand -base64 24  # HLS_SIGNING_SECRET
openssl rand -base64 16  # POSTGRES_PASSWORD

docker compose up -d

Then open http://localhost:8080.

On the first startup with an empty database, Clipset creates one admin account from INITIAL_ADMIN_EMAIL, INITIAL_ADMIN_USERNAME, and INITIAL_ADMIN_PASSWORD in .env.

Canonical Docs

  • docs/DEPLOYMENT.md - setup, compose files, environment, storage, and upgrades
  • docs/ADMIN_OPERATIONS.md - invites, recovery, quotas, account management, and settings behavior
  • docs/MEDIA_STREAMING.md - upload formats, transcoding, progressive playback, HLS, and token flow
  • docs/IMPROVEMENT_PLAN.md - implementation roadmap

Operational Notes

  • Storage paths are environment-managed, not editable in the admin UI.
  • Upload limits are enforced across nginx, the backend, and the admin settings UI with a 10 GB hard ceiling.
  • Transcoding settings affect new processing work; existing videos are not retroactively reprocessed.
  • The public forgot-password endpoint is informational only; it does not issue reset tokens.
  • There is currently no automated quota reset scheduler.

Development

docker compose up -d

docker compose logs -f

cd backend && go test ./...
cd frontend && npm install && npm run build

The default development stack exposes:

  • app: http://localhost:8080
  • backend: http://localhost:8000
  • frontend dev server: http://localhost:5173
  • postgres: localhost:5432

Tech Stack

  • Frontend: React 19, TypeScript, Vite, Tailwind CSS, TanStack Router
  • Backend: Go 1.25, net/http, sqlc, River
  • Database: PostgreSQL 16
  • Proxy: nginx
  • Media pipeline: FFmpeg with optional NVIDIA NVENC

Status

Clipset now has backend regression coverage for core auth, invite, settings, streaming, and upload helper paths. There is no frontend automated test harness yet.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors