Technical brief · v0.1

How Victory is put together.

Victory is a browser-based virtual tabletop theater: a persistent, role-aware application for authoring worlds, preparing productions, staging live Showings, and giving each participant the right view of the stage.

Audience: designers, developers, curious humansCanonical product language: Victory Product Glossary
01System shape

The stage is the center of gravity.

Victory treats live performance as a first-class state, not an afterthought attached to a static board. The stage runtime composes persistent objects, maps, tokens, cues, drawings, and visibility into a view that can differ by participant.

The same projection path is used for every viewer, including preview tools. That makes visibility a property of the stage object and current projection state—not merely a side effect of someone’s role.

RuntimePixiJS renderer
InteractionVue + shared frontend shell
SyncWebSocket session state
PersistenceGo services + Postgres
ServingStatic files + Caddy
02Live stage

Different people can share a stage without sharing the same view.

Audience, Cast, Crew, Director, Producer, and Operator are not interchangeable labels. They describe different relationships to the production, and the stage can project different objects to different viewers.

Showtime is the live-performance mode. A Showing is the scheduled or audience-facing event. A Show is the enduring production underneath it. Keeping those concepts separate lets one world support many performances.

one live stage
Audience
projected view
Cast
character view
Director
backstage view
03Authoring surfaces
Plan

Storyboards

A spatial creative worktable for arranging cards, columns, rows, and bands before the live session.

Write

eWrite

Markdown-based authoring for manuscripts, Rulesets, and Skill Directories, with visibility and revision models of its own.

Stage

Library + Workshop

Reusable Scenes, assets, and authored material move from storage and composition toward the live venue.

Belong

Greenroom + Trailers

Characters are persistent identities inside a Show; account-level identity remains a separate surface.

04Deployment model

Cloudflare can be the public front door.

The marketing and product surfaces do not need to share one deployment. This site is static and can be served from Cloudflare Pages at victory.theater. The live Victory application can remain separately deployed behind its own service or subdomain while the public site links to it.

That split keeps the crawler-facing story fast, stable, and indexable without forcing the application runtime into the same release cycle.

01Static site

Cloudflare Pages or Pages-connected Git deployment.

02Live application

Existing Go, Postgres, Caddy, and WebSocket runtime.

03Domain

victory.theater as canonical public URL; app can use a subdomain.

04Crawlability

Canonical metadata, sitemap, robots rules, and server-rendered HTML.

Keep reading

The front door is only the beginning.

Back to the theater