System overview & architecture
Luminator Technology Group

How CreatorStudio Suite
is put together

Context, components, data flows, MQTT contract, and deployment options — for architects, integrators, and engineering leads.

C4-style overview
MQTT = API
Cloud or edge
Thin clients
System context

What sits around the product

Operators author content; the engine decides; vehicles actuate; Suite signs and TTS suppliers are peers on open contracts.

Operators

Author announcements & LED layouts; publish; monitor fleet; export proof.

CreatorStudio Suite

Creator + Engine + Monitor + players — one portal origin.

Vehicle / signs

Thin MQTT clients, speakers, Ultima / Mobitec FF, MatrixRenderer Unit.

Cloud services

Azure PG config / Blob cache · Azure / ElevenLabs / Acapela TTS · MQTT broker.

Context diagram

End-to-end system view

AUTHOR & STORE SUITE RUNTIME HUB VEHICLE & OPS Creator playlists · LED · triggers Azure PG engine_config Realtime MP3 Storage cache TTS cloud Azure · ElevenLabs · Acapela Live PIS-PT journey feed {tenant}/{vehicleId}/pis/0/# CreatorStudio Engine Context → Triggers → Pipeline Playlist + Matrix render · cache MqttBus · proof · fleet · health hot-swap config ~1 s Dashboard · /monitor map · LED preview · proof · sim MQTT topics = API 1883 / 9001 Vehicle player Go · Python · browser speakers · LED · FF MatrixRenderer Unit on-sign Suite hardware Passenger app /player · journey UI Ops users via Dashboard publish sync ~1s journey PIS in ADT+FF actuate played synth
Component view

Major building blocks

Creator web/creator/

  • Angular 20 + PrimeNG
  • Projects, playlists, triggers, lexicon
  • LED layouts / vehicle faces
  • Publish → Azure PG

Engine src/

  • Node / TypeScript ESM
  • PtTriggerEngine + pipeline
  • TTS cache + matrix/FF
  • History / fleet / health

Monitor web/

  • Live map & event feed
  • Sign previews · proof UI
  • MQTT over WebSocket
  • Simulator & diagnostics

Portal

scripts/dashboard-server.ts — one origin for Creator, Monitor, player, docs, decks.

Thin clients

clients/go · clients/python · public/player.html — same MQTT contract.

Shared contracts

src/shared/payloads.ts · topic patterns in src/config.ts · FNT / FF encoders.

Runtime pipeline

Inside the engine (one pass)

PIS-PTVehicleContextTriggers PipelineRenderMqttBusAck

Decide

  • Edge-detect on state change only
  • 33 built-in + custom + geofence
  • Door / velocity / stop-button gates
  • Priority schedule per vehicle

Produce

  • Resolve {vars} → playlist audio
  • Matrix: Display → Cycles → Layout
  • Cache: LRU → FS → Azure Blob
  • Prerender upcoming stops

Composition root: src/index.ts · Detail: ARCHITECTURE.md §4.

Integration contract

MQTT topics are the system API

DirTopicRole
IN{tenant}/{vehicleId}/pis/0/#Sensors / journey into the engine
OUT…/pis/0/ttsADT 4.x audio for speakers
OUT…/display · …/exteriorInterior / exterior LED bitmaps
OUT…/display/signs · …/**/ffMatrix frames + raw Mobitec FF
ACKengine/playedProof-of-play when clip ends
OPSengine/fleet · health · metricsDashboard retained views

No private Engine↔Dashboard API. Broker: TCP 1883 · WebSocket 9001. Clients may join late on retained topics.

Data & config

What moves where

Config plane

  • Creator publishes engine_config
  • pg_notify → Engine
  • On-disk JSON fallback (edge)
  • Version bump on hot-swap

Media plane

  • TTS synth on cache miss
  • Phrase key = hash(text+voice)
  • Object store = fleet shared tier
  • ADT carries audio to clients

Evidence plane

  • Dispatched events + GPS/time
  • engine/played closes loop
  • History store / proof export
  • Map + replay in Monitor
Deployment

Same software, two topologies

Cloud / central

  • One Engine process per tenant (typical)
  • Fleet MQTT into data centre / VPC
  • Thin clients on every vehicle
  • Dashboard & Creator for ops staff
  • Scale: ~2,000 veh / process (measured)

On-vehicle edge

  • Same engine as multi-arch container
  • Local MQTT + last-known-good config
  • Optional cloud sync when online
  • Autonomy / offline corridors
  • Non-root hardened image

MatrixRenderer remains the on-sign Unit. Suite software drives content to it; it does not replace the Unit.

Suite placement

How this sits next to Luminator products

MatrixRenderer Unit

On-sign hardware — Presentation Schema consumer (Display → Cycles → Layout).

CreatorStudio modules

Software SKUs L1–L9 — author, speak, prove, optionally publish FF / signs.

Shared language

MQTT · FNT fonts · Mobitec FF mono/RGB · Ultima face roster.

Integrator takeaway

Implement a thin MQTT client once. Consume ADT + display/FF; publish PIS-PT and engine/played. Content and voices stay out of vehicle firmware.

Architecture summary

Author → Publish → Decide → Render → Actuate → Prove

Creator writes config; Engine executes against live journey data; MQTT is the only integration surface; thin clients speak, show, and acknowledge. Cloud or edge — same code path.

ARCHITECTURE.md
PRESENTATION.html · animated diagram
SOFTWARE-TEAM.html · code map
← → navigate · Space next · F fullscreen
1 / 1