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.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.
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 openindex.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 atzshall.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 theLICENSE file in the repository root for the full text.