This guide walks you through cloning the repository and getting the simulator running in your browser. Because Television Simulator ‘99 is a collection of plain static files — HTML, pre-compiled CSS, and vanilla JavaScript — you only need a simple HTTP server to serve them. There is no build step, noDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/zshall/program-guide/llms.txt
Use this file to discover all available pages before exploring further.
npm install, and no configuration file to edit before the TV turns on.
Prerequisites
You need a tool that can serve static files over HTTP. Any of the following work:
- Python 3 (ships with macOS and most Linux distributions)
- Node.js with
npx serve(available wherever Node is installed) - Any other local HTTP server (VS Code Live Server, Apache, nginx, Caddy, etc.)
file:// URL.No build step is required. The repository ships with a pre-compiled
css/site.css, so you do not need node-sass, Sass, or any other toolchain to run the project. SCSS source files are included only if you want to customise the styles.Clone the Repository
Clone the project from GitHub using the command below, then move into the project directory:Alternatively, download a ZIP archive from the GitHub Releases page and extract it.
Start a Local HTTP Server
Serve the files from the root of the repository. Choose whichever tool you have available:
python3 -m http.server 8080 starts a server on port 8080 (the port is explicit in the command; Python’s built-in server defaults to 8000 when no port is given). npx serve binds to port 3000 (or the next available port) and prints the exact URL to the terminal.Open the Simulator in Your Browser
Navigate to the address printed by your server:
- Python: http://localhost:8080
- npx serve: http://localhost:3000
index.html, which is the sole entry point for the application.Watch the TV Boot Up
The simulator starts automatically. Here is what happens in sequence:
- The YouTube IFrame API script is injected into the page head by
YouTubeApi.loadYouTubeAPI(). - Once the API fires
onYouTubeIframeAPIReady, theTVclass fetchesdata/guide.xmlvia$.ajax. guide.xmlis parsed and the channel markeddefaultandwatchable— Channel 12 (PRV) — is selected automatically.channels/012/layout.htmlis loaded into the screen area andChannel12.show()initialises the YouTube player, the scrolling marquee, and the live program grid.- The screen fades in over the 3-second warmup interval defined in the
TVconstructor.
Running with Docker
Pull the image from Docker Hub and run it with a single command:-p 8080:80 flag maps that to port 8080 on your host.
Customising the Channel Listings
All channel data — show names, timeslots, notices, and ad copy — lives indata/guide.xml. Open the file in any text editor and you will find clearly structured <channel>, <listing>, <notice>, and <ad> elements. Edit the existing entries or add your own channels and the guide grid will reflect your changes immediately on the next page load.
- Adding Channels — create a new channel class and layout
- Guide XML Reference — full reference for every XML element and attribute