A plain-HTML, no-framework template for interactive "you make the call" history games, hosted free on GitHub Pages. It ships with a complete, fact-checked game — Apollo 13 — that you can play, read, and copy to build the next one.
🌐 Live demo: https://robgruhl.github.io/decision-game-starter/
🧬 Make your own copy: click Use this template on https://github.com/RobGruhl/decision-game-starter
New here? Read GETTING-STARTED.md — accounts, installs, your first Claude Code session, and how to publish.
A finished game, ready to publish as-is:
- 34 slides in true mission chronology — 10 narrative, 8 info, 10 scored decisions, plus a completion page and 4 merit-badge resource pages
- Scoring & ranks — decisions lock on first tap; final page compares your calls to NASA's and awards a rank (Ground Crew → Flight Controller → Flight Director → Mission Commander)
- Quick Mission mode (
?mode=quick) — just the 10 decisions, ~10 minutes - Share by QR code — score travels in the URL fragment, never to a server
- Works offline after the first visit (service worker)
- Private by design — no cookies, no accounts, no analytics, no third-party requests;
privacy.htmlexplains and invites the reader to verify it in DevTools - Every decision cites primary sources — NASA Flight Journal, Mission Report MSC-02680, the Cortright report, NASA SP-350
And the machinery to make more games like it:
assets/js/app.js— the whole engine (~650 lines of readable vanilla JS)assets/css/style.css— one stylesheet, CSS variables at the top- Slide templates for narrative / info / decision / completion pages
scripts/verify-*.sh— catches broken prev/next chains before you pushCLAUDE.md— a detailed brief so Claude Code understands the engine, the content rules, and the Making a new game from this starter recipe
HTML5 · CSS3 · vanilla JavaScript · GitHub Pages. Zero build tools, package managers, frameworks, or runtime dependencies. One vendored MIT file (assets/js/qrcode.js).
git clone https://github.com/<you>/<this-repo>.git
cd <this-repo>
python3 -m http.server 8000
# open http://localhost:8000(A local server is needed for the offline service worker; opening index.html directly mostly works but won't register it.)
Push to main, then on GitHub: Settings → Pages → Source: Deploy from a branch → main / (root). The site appears at https://<you>.github.io/<this-repo>/ in a minute or two. Full details and troubleshooting: docs/DEPLOYMENT_GUIDE.md.
After any change, bump CACHE_VERSION in sw.js so returning visitors get the new version.
├── index.html Landing page
├── timeline.html Chapter map
├── privacy.html The no-tracking promise (keep it true)
├── spacex.html Deep dive: why the decisions still matter
├── explore/ Merit-badge deep dives
├── slides/ 01-launch.html … 34-merit-badge-space-exploration.html
├── assets/css, js, images
├── sw.js Offline cache — bump CACHE_VERSION on every change
├── scripts/ verify-navigation.sh, verify-button-text.sh
├── docs/ Deployment guide, sitemap spec, scoring design
├── GETTING-STARTED.md Setup guide for a new developer
└── CLAUDE.md Brief for Claude Code
The short version (the long version is in CLAUDE.md):
- Pick a true story with 8–12 real decision points and primary sources for each.
- Copy this repo (GitHub: Use this template, or fork/clone).
- Open Claude Code in the folder and start with something like: "Read CLAUDE.md. I want to turn this into a game about ___. Here are the decisions and sources: … Start by re-skinning index.html and the timeline; leave the engine alone."
- Rewrite slides in chronological order, update the engine tables, replace images, regenerate the
sw.jsprecache list. - Run the verify scripts, play it through on a phone, push.
- Freeze or Squeeze? — move to the Lunar Module or stay in the Command Module?
- Shut Down the Command Module? — power down the mothership to save its batteries?
- Turn Around or Free-Return? — reverse course or use the Moon's gravity?
- Stars or Sun/Earth Navigation?
- Speed Up or Coast? — fire the PC+2 burn?
- Water Conservation — ration for the crew or the equipment?
- Build the CO₂ Mailbox?
- Comm Power: Loud or Lean?
- Recharge for Re-Entry? — the never-before-tried LM→CM battery jump-start
- Service Module Jettison Timing
Created by Rob Gruhl with Claude Code for the 2026 Elevate Scout Jamboree (NASA Tent, Apollo Table, presented by Ed Gruhl). Original project: RobGruhl/apollo-13-scout-mission. This starter is that game minus the jamboree-specific parts (print masters, exhibit files, visitor counting).
Code: MIT License (see LICENSE). Images and mission content courtesy of NASA, used per NASA's media guidelines for educational purposes.