Skip to content

Run a demo installation

Demo Mode starts a complete Tilecast installation that’s already full of realistic sample data: a school district with buildings, screens in every status, playlists, Layouts, schedules, and players that stay online. Studio opens signed in, so you can explore, test a change, or take screenshots without setting anything up.

Everything in a demo is real Tilecast: the same server, Studio, database schema, and API you’d deploy. Only the data and the players are simulated.

You need Docker. From the repository root:

  1. Build and start the demo:

    Repository root · Start Demo Mode
    make demo

    The first run builds the server image, so it takes a few minutes.

  2. Open http://localhost:18080.

    Studio opens as the demo Owner, Dana Whitfield. A Demo mode banner stays at the top of every page.

To use a different port, set TILECAST_DEMO_PORT, for example TILECAST_DEMO_PORT=19000 make demo.

The default kitchen-sink dataset is a district with a high school, a middle school, a main office, and an athletic complex. It includes:

  • 13 screens, showing every status Studio computes: online, recent, stale, offline, and disabled
  • Fire TV, Android TV, and Linux players on different Player versions, in 1080p, 4K, and portrait
  • display groups, a screen with no content, and a player waiting for pairing approval
  • processed images, a website, tags, playlists, and Layouts, including unpublished drafts
  • schedules, a draft campaign, a Countdown Bar plugin, and four user accounts

A smaller basic dataset has four screens and two playlists.

Seven screens have simulated players that stay connected. They react like real players: assign new content and the screen picks it up, or send Identify and the command completes. Stale and offline screens age from the moment the demo starts, so reset the demo to bring them back.

Simulated players do not render content. They acknowledge preview requests as unsupported, so Studio shows Capture error instead of waiting for an image. Stale screens without a previous capture show Offline in the preview panel; a cached capture remains visible as stale.

Anything you change in Studio is kept until you reset:

Reset the demo
make demo-reset

A reset restores the same records with the same IDs. To switch datasets, run make demo-reset SCENARIO=basic.

When you’re done, stop the demo and delete its data:

Stop and remove the demo
make demo-down

The demo uses its own Docker project and volumes, so it never touches an installation you run with the regular Compose file.

The Playwright smoke tests run against a running demo, with no mocked responses:

Run the browser smoke tests
npx playwright install chromium
make demo
npm run test:e2e

Each test resets the demo first, and the suite refuses to run against a server that isn’t in Demo Mode. When a test fails, Playwright saves a trace and a screenshot in e2e/test-results.

See Testing and CI for Studio visual comparisons, Linux baseline updates, Widget screenshot tests, and failure reports.

With the production demo running and Chromium installed, run:

Capture documentation images
npm run docs:screenshots
npm run docs:check
npm run docs:build

The generator resets the demo before each capture. Run it separately from the browser and visual suites. It captures the real Studio UI in light and dark appearance at 2× pixel density. The docs image follows your selected docs theme. The generator hides only the Demo Mode notice, including the editor’s compact badge; it doesn’t mask application content or simulate API responses. The PNG sources go into apps/docs/src/assets/screenshots/, where Astro can optimize their delivery.

Review every image before committing, including controls, loading states, and any sensitive information. Regenerate images when the UI changes. The capture inventory lists routes, crops, page placements, and states intentionally omitted from Demo Mode.

The Demo Mode reference covers the reset API, the stable record IDs, how the simulated players work, the configuration variables, and the safety checks that keep Demo Mode off real installations.