Skip to main content

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

Television Simulator ‘99 is a browser-based application that faithfully recreates the experience of turning on a hotel television in the late 1990s. Built entirely with vanilla JavaScript, jQuery, and SCSS, it renders a pixel-perfect CRT television frame, plays looping YouTube video, and scrolls a Prevue Channel-style program guide populated from a local XML file — all without a build step or bundler.

What is Television Simulator ‘99?

Long before streaming services, hotel guests were greeted by a dedicated cable channel — often Channel 12 or a similar low number — that did nothing but scroll through the day’s programming grid while ambient music or local commercials played in a split-screen box. That channel was the Prevue Channel (later TV Guide Channel), and its distinctive yellow-on-dark-blue grid, PrevueGrid bitmap font, and sluggish marquee animation became a defining aesthetic of the era. Television Simulator ‘99 recreates that exact experience. When you open index.html, a CRT television graphic fades in, Channel 12 (the Prevue Channel) boots up, and a scrolling guide fills the screen with period-accurate listings for dozens of channels — KCBS, KNBC, ESPN, Nickelodeon, HBO, MTV, and more — all timestamped to a single evening in 1999. A YouTube iframe plays a loop of 90s commercials in the upper-right panel while rotating text ads cycle through the lower-left box. On desktop browsers a scanline overlay is applied over the screen area to sell the CRT illusion. The channel data lives in a single XML file (data/guide.xml), making it easy to swap in custom listings, notices, and ads without touching any JavaScript. Adding a brand-new channel requires creating a folder under channels/, writing a class that extends Channel, and registering it in the TV constructor — the architecture is intentionally approachable for hobbyist developers.

Key Features

Prevue Channel Guide

A scrolling program grid built from data/guide.xml, complete with channel numbers, call signs, time columns, notices, and rotating ad panels — all rendered in the authentic PrevueGrid bitmap font.

YouTube Integration

The YouTubeApi static class wraps the YouTube IFrame API to autoplay, loop, stop, and mute video. The TV’s mute button reflects state in the on-screen display, just like a real remote control.

CRT Styling

An SCSS-driven scanline overlay, a tv.png bezel mask, and a CSS scale() transform that letterboxes the 1200 × 1000 px TV frame to fit any viewport — delivering an authentic cathode-ray look.

Extensible Channel System

Every channel is a JavaScript class that extends the Channel base, with lifecycle methods — show() and teardown() — so each channel can manage its own timers and DOM independently. The TV class also calls ready() on the channel after the fade-in completes.

XML-Driven Data

data/guide.xml defines every channel, listing, notice, and ad. Timeslot integers map to 30-minute blocks starting at midnight, giving you fine-grained control over what appears in the guide grid.

Docker Support

An official Docker image (zshall/television-simulator) lets you run the simulator with a single docker run command — no local web server required.

Project History

Television Simulator ‘99 was created by Zach Hall in 2017 as a nostalgic tribute to late-1990s hotel television. The original v1 release was hosted as a GitHub Pages static site at zshall.github.io/program-guide and is still accessible today. A rebuilt v2 with expanded channel support launched at tvs.gcpw.art. Since the initial release the project has grown into a small ecosystem: an official Docker image on Docker Hub (zshall/television-simulator) simplifies self-hosting, and the separate Television Simulator Launcher (available on GitHub Releases) packages the simulator as a native desktop application. Development is tracked publicly in a Notion Issue Tracker, and the community gathers in Discord and Slack. The project is actively maintained; the latest tagged release in the repository is v6.0.0.

License

Television Simulator ‘99 is released under the MIT License. You are free to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the software. See the LICENSE file in the repository root for the full text.

Build docs developers (and LLMs) love