Skip to content

VideoSphere Documentation

VideoSphere is an open-source, self-hosted video distribution platform. Upload once to Cloudflare R2, then distribute to YouTube, Vimeo, Google Drive, SFTP, SMB backup, and more — with metadata drafts and AI-assisted descriptions.

Use these docs to run a production deployment, configure platform integrations, develop locally, and contribute safely.

Start Here

Tech Stack

TechnologyPurpose
Next.js 16React framework (App Router, API routes)
React 19UI components
TypeScriptType safety
Tailwind CSS 4Styling
MongoDB 8Application data
Cloudflare R2Temporary upload staging
VitestUnit and component tests
ESLint + PrettierLinting and formatting

Repository Layout

├── app/                    # Next.js App Router pages and API routes
├── components/             # Reusable React components
├── hooks/                  # Custom React hooks
├── lib/                    # Server utilities and shared logic
├── types/                  # TypeScript type definitions
├── docs/                   # This documentation site (VitePress)
├── __tests__/              # Test files
├── portainer-stack.yml     # Production stack template (pre-built image)
├── docker-compose.yml      # Local development stack (build from source)
└── Dockerfile              # Production container image

Editing This Documentation

The docs site is built with VitePress from files in the docs/ folder.

CommandPurpose
pnpm docs:devLocal preview with live reload (regenerates API docs first)
pnpm docs:buildProduction build — run before merging docs changes
pnpm docs:previewPreview the built output locally
pnpm docs:apiRegenerate TypeDoc output at docs/public/typedoc

Typical workflow: edit markdown → pnpm docs:dev while writing → pnpm docs:build before opening a PR.

API reference while previewing locally: /api/ and /typedoc/index.html.

Docs deploy automatically to videosphere.sarahpoulin.ca via deploy-docs-pages.yml on pushes to main.