Theatrical – typesafe SDK, CLI and UI components for cinema platform APIs

designedbybruno1 pts0 comments

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...

theatrical cinema client platform from await

Related Articles