Theatrical — A developer platform for cinema technology
SessionsSitesFilmsOrdersLoyaltySubscriptionsPricingFood & Beverage<br>SessionsSitesFilmsOrdersLoyaltySubscriptionsPricingFood & Beverage
Logline
Cinema platforms process billions in annual transactions. The APIs are production-grade.<br>The developer ecosystem around them is not.
No typed clients. No component libraries. No event systems. Every integrator starts from scratch —<br>reading raw API docs, hand-building request types, re-solving the same problems.<br>Theatrical is the missing developer-experience layer , built so you can go from<br>documentation to a working booking flow in an afternoon.
Scene 01 — The set
Six packages. Three languages.<br>One API surface.
┌─────────────────────────────────────────────────────────────────────┐<br>│ Your Application │<br>├─────────────┬──────────────┬──────────────┬─────────────────────────┤<br>│ @theatrical│ @theatrical │ @theatrical │ @theatrical │<br>│ /react │ /templates │ /analytics │ /events │<br>│ Components │ Starters │ Horizon │ Real-time Bridge │<br>├─────────────┴──────┬───────┴──────────────┴─────────────────────────┤<br>│ │ @theatrical/cli │<br>│ │ init · codegen · inspect │<br>├────────────────────┴────────────────────────────────────────────────┤<br>│ @theatrical/sdk (TS) · Theatrical.Sdk (C#) · theatrical (Py) │<br>│ Auth · HTTP · Retry · Rate Limiting · 8 Resources │<br>├─────────────────────────────────────────────────────────────────────┤<br>│ Cinema Platform APIs (OCAPI · GAS · Horizon) │<br>└─────────────────────────────────────────────────────────────────────┘
Scene 02 — Now showing
Polyglot SDKs
One API surface across languages. Same types, same tests, same NZ cinema mock data.
TypeScript
Reference implementation<br>npm install @theatrical/sdk
Zod runtime validation
8 resource modules
274 tests
Mock mode — zero credentials
C# / .NET
Alpha<br>dotnet add package Theatrical.Sdk
.NET 8, async/await
System.Text.Json, nullable refs
272 tests (xUnit)
IDisposable client
Python
Alpha<br>pip install theatrical
Python 3.10+, async-first
httpx + pydantic v2
337 tests (pytest)
mypy-strict clean
Call sheet — full package matrix
PackageRoleTestsLicense
@theatrical/sdkType-safe client — auth, HTTP, 8 resource modules, Zod validation274MIT<br>@theatrical/cliDeveloper tools — init, codegen, inspect165MIT<br>@theatrical/reactCinema UI — SeatMap, SessionPicker, OrderSummary, Loyalty34BSL 1.1<br>@theatrical/analyticsHorizon client, fluent query builder, CSV/JSON/DataFrame export35BSL 1.1<br>@theatrical/eventsReal-time event bridge — poll, diff, emit, HMAC-signed webhook71BSL 1.1<br>Starter templatesReact ticketing starter (4-page booking app) — scaffold with npx theatrical init—BSL 1.1
Scene 03 — Roll camera
Get started in 30 seconds
Mock mode returns real NZ cinema fixtures — Embassy Theatre Wellington, Roxy Cinema, Rialto Auckland — so you can build complete flows with no API access.
TypeScript
import { TheatricalClient }<br>from '@theatrical/sdk';
const client =<br>TheatricalClient.createMock();
const { data: films } =<br>await client.films.nowShowing();
const order = await client.orders.create({<br>sessionId: films[0].sessionId,<br>tickets: [{ type: 'adult', seatId: 'H7' }],<br>});
C# / .NET
using Theatrical.Sdk;
var client =<br>TheatricalClient.CreateMock();
var films =<br>await client.Films.NowShowingAsync();
var sessions =<br>await client.Sessions.ListAsync(<br>new SessionFilter {<br>SiteId = "site_embassy_wellington"<br>});
Python
from theatrical import TheatricalClient
client =<br>TheatricalClient.create_mock()
films =<br>await client.films.now_showing()
sessions = await client.sessions.list(<br>site_id="site_embassy_wellington",
Scene 04 — The twist
What makes it different
04 / A
Real-time events from request-response APIs
Cinema platforms have no webhooks. The event bridge polls, diffs state changes, and delivers typed, HMAC-SHA256-signed webhooks. One failing endpoint never blocks the others.
04 / B
A CLI that teaches the platform
init scaffolds a wired-up project. inspect explores any endpoint interactively. codegen generates types from an OpenAPI spec. The tooling itself is the documentation.
04 / C
Components that know cinema
SeatMap with ARIA keyboard nav, wheelchair & companion markers. SessionPicker, OrderSummary, PaymentForm, Loyalty. Dark-mode-first, fully themeable via design tokens.
Scene 05 — Director's commentary
Research
Five essays on the architecture, economics and future of cinema platform technology.
The Cinema Platform Thesis
Why cinema technology needs a developer ecosystem, and what it takes to build one.
What Stripe Did for Payments
Lessons from the platform that turned payments infrastructure into a developer product.
Cinema as Protocol
Cinema-going as cultural infrastructure — why the ritual matters more than the technology.
The $3.3 Billion API
The scale, economics and untapped potential of cinema platform transaction volume.
Event-Driven Cinema
Real-time capabilities for platforms that were built for batch processing.
RSS...