# DemoDirector v0.1.6 - Table of Contents

> Reproducible, replayable demos for Phoenix LiveView — author reusable scripts, with or without AI.

## GUIDES

- [Demo Director](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- Authoring
  - [DemoDirector](DemoDirector.md): Reproducible, replayable demos for Phoenix LiveView — author
reusable scripts, with or without AI.
  - [DemoDirector.Components](DemoDirector.Components.md): HEEx components for the DemoDirector overlay.
  - [DemoDirector.HEEx](DemoDirector.HEEx.md): HEEx-template helpers for tagging elements as demo-targetable.
  - [DemoDirector.Router](DemoDirector.Router.md): Router macro for mounting DemoDirector's static assets and
registering the mount path so the overlay component can construct
asset URLs.

- Internals
  - [DemoDirector.Demos](DemoDirector.Demos.md): Discovers and parses metadata from saved demo scripts.
  - [DemoDirector.Playback](DemoDirector.Playback.md): Server-side entry point for pushing playback JS to every connected
overlay.
  - [DemoDirector.PlaybackChannel](DemoDirector.PlaybackChannel.md): Phoenix channel that relays playback JS from the server to every
connected overlay.
  - [DemoDirector.PlaybackSocket](DemoDirector.PlaybackSocket.md): Phoenix socket that the overlay JS connects to in order to receive
playback messages from `mix demo_director.play`.
  - [DemoDirector.Plug.Index](DemoDirector.Plug.Index.md): Renders a tiny HTML listing of every saved demo and serves each
demo's emitted JS at `<mount>/demos/<name>.js`.
  - [DemoDirector.Plug.Play](DemoDirector.Plug.Play.md): Receives a POST containing JavaScript and broadcasts it on the
`demo_director:playback` PubSub topic so connected overlays can
eval it.
  - [DemoDirector.Plug.Static](DemoDirector.Plug.Static.md): Mounted at the package's mount path by
`DemoDirector.Router.demo_director/1`. Routes

## Mix Tasks

- Mix Tasks
  - [mix demo_director.install](Mix.Tasks.DemoDirector.Install.md): Installs `demo_director` into a Phoenix application.
  - [mix demo_director.play](Mix.Tasks.DemoDirector.Play.md): Prints a URL you can open (or click in your terminal) that plays a
saved DemoDirector demo against the running dev server.

