VOD Docs

Current status

What is real today, what is UI-only, and what is missing.

VOD is at MVP: the core viewer journey and the admin video lifecycle work end to end in production. This page is the honest inventory.

Chart · placeholder
Feature map: real, partial and UI-only features by area

Grid or matrix coloured by status.

Real and in production

AreaFeature
UploadResumable tus uploads up to 50 GB with admission control; legacy multipart upload
ProcessingOne-at-a-time queue; storyboard; up to 7 H.264 renditions; HLS packaging; failure handling and restart recovery
DeliveryHLS through Caddy from MinIO with long-lived segment caching
PlaybackAdaptive video.js + hls.js player with a quality menu and timeline thumbnails
BrowsePublic feed, hero carousel, category filter, title detail page, related titles
AuthSign-up, email verification, sign-in, token refresh, logout, password reset by emailed code
AdminVideo table with edit, visibility, soft delete, download, preview; upload with progress
InfraDocker Compose on one VPS, automatic HTTPS, Vercel-hosted frontend and docs

Partial

FeatureGap
Admin videos tableLoads the first 20 videos and works on them in the browser instead of using the API's server-side search, filters and pagination
Category filter on browseRuns in the browser over the first 20 public videos
View countsEndpoint exists; the frontend never calls it
WatchlistButton and sign-in gate exist; no backend

UI-only

Admin dashboard statistics, users, analytics, categories, settings, "Save draft", bulk delete, navbar search and notifications.

Not started

  • Comments, ratings, watch history, "continue watching"
  • Admin user management API
  • Categories as a database entity
  • Automated tests (backend and frontend)
  • CI/CD for the backend, backups, monitoring and alerting

Known bugs

AreaBug
Frontend authReturning users can be left without a Sign in button or avatar until storage is cleared (session-restore edge cases)
Upload dialogStatus polling continues after completion or failure, repeating callbacks
PipelineRetry handling in some tasks can double-count or swallow a retry; the download retry in prepare_video cannot succeed
PipelineFailed runs leave their working directory on the worker
SetupThe env and Caddy templates miss two settings a fresh clone needs (documented in Getting started)

The plan to address these is in Improvements.

On this page