Supernatural Across the Eras — a rewatch episode explorer
This repository has been archived on 2026-09-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • JavaScript 56%
  • CSS 25.1%
  • HTML 15.4%
  • Python 2.8%
  • Dockerfile 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-16 11:30:25 +00:00
.github/workflows feat: Supernatural Across the Eras episode explorer 2026-08-16 02:29:39 -04:00
data refactor: data-driven chart categories + season count (shared with goat-gideon) 2026-08-16 03:12:01 -04:00
k8s deploy: pin image sha-230c4d4 2026-08-16 11:30:25 +00:00
.dockerignore feat: Supernatural Across the Eras episode explorer 2026-08-16 02:29:39 -04:00
.gitignore feat: Supernatural Across the Eras episode explorer 2026-08-16 02:29:39 -04:00
app.js feat: remember chart collapsed/expanded state in localStorage 2026-08-16 07:29:50 -04:00
Dockerfile feat: Supernatural Across the Eras episode explorer 2026-08-16 02:29:39 -04:00
index.html feat: link to eras.inevitable.fyi from hero and footer 2026-08-16 07:28:45 -04:00
nginx.conf feat: Supernatural Across the Eras episode explorer 2026-08-16 02:29:39 -04:00
README.md feat: PostHog analytics (pageviews + explorer events) 2026-08-16 02:38:03 -04:00
styles.css feat: link to eras.inevitable.fyi from hero and footer 2026-08-16 07:28:45 -04:00

moose-and-squirrel 🫎🐿️

Supernatural Across the Eras — an episode explorer for rewatches. Live at https://supernatural.inevitable.fyi

A static, no-build rewatch companion. The interactive era chart (adapted from FTWinchester's "Supernatural Across the Eras") sits on top of all 327 episodes; click any bar / season / vibe / guest character to find episodes to watch.

Run

python3 -m http.server 8765    # then open http://localhost:8765

Deploy anywhere static (Netlify, GitHub Pages, Render static site) — just upload the folder.

Features

  • Interactive era chart (showrunners, arcs, villains, locations, home bases). Click to filter; shift-click to combine.
  • Filters: seasons, curated "vibes" (comedy/meta, flashbacks, holidays, MOTW, milestones, Wayward Sisters…), guest character (from TVmaze guest-cast credits), min rating, sort, watched/unwatched.
  • Full-text search across title, summary, and guest cast.
  • Episode detail modal with "what's going on this season" context, guest cast, next-episode nav.
  • Watched tracking (localStorage) and 🎲 Surprise me.
  • Filter state lives in the URL hash — share links to a filtered view.

Data

  • data/episodes.json — from TVmaze (data/fetch_cast.py regenerates guest cast; build_cast.py compacts it).
  • data/eras.js — the chart, transcribed. Edit to tweak eras.
  • data/tags.js — hand-curated episode vibes. Add/adjust freely.

Deploy

Container: ghcr.io/jhgaylor/moose-and-squirrel (nginx, port 8080), built by .github/workflows/build.yml on push to main, which then pins the new sha-* tag into k8s/deployment.yaml. home-cloud's Flux reconciles k8s/ to https://supernatural.inevitable.fyi.

Analytics

PostHog (project "supernatural.inevitable.fyi", US cloud). Autocapture is off; pageviews plus explicit events: era_selected, season_selected, vibe_selected, character_selected, searched, sort_changed, filters_reset, surprise_me, episode_opened, watched_toggled, chart_toggled. See track() in app.js.