Two audiences, one schema
The CMS needs everything; the public site must never leak drafts or internal notes. Rather than duplicating the catalogue, visibility is enforced at the query layer with separate read models over the same collections.
One backend serving a CMS and a streaming front-end
Jolt is two products on one spine. Internally it is a CMS where the team ingests films, writes metadata, manages categories and controls what goes live. Externally it is a public streaming interface where audiences browse and watch.
Both read the same MongoDB catalogue, which means an editorial change is visible on the public site without a sync job or a second source of truth.
The CMS needs everything; the public site must never leak drafts or internal notes. Rather than duplicating the catalogue, visibility is enforced at the query layer with separate read models over the same collections.
Editors and viewers are the same Auth0 tenant but must not share permissions. Roles come off the token and map to the API's own permission layer, so a viewer session can never reach a CMS route even when the login is identical.
Video is served over HTTP range requests so the player can jump to any timestamp without pulling the whole file, which cut both seek time and bandwidth on long films.
Upload and encode are decoupled from the request cycle. The CMS tracks per-film processing state so editors see accurate progress and cannot publish something still mid-encode.