Criminal Minds 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.8%
  • CSS 24.6%
  • HTML 15.1%
  • Python 2.8%
  • Dockerfile 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-16 07:33:36 +00:00
.github/workflows feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
data feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
k8s deploy: pin image sha-776707b 2026-08-16 07:33:36 +00:00
.dockerignore feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
.gitignore feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
app.js refactor: shared app.js with episode-axis chart support (no behavior change here) 2026-08-16 03:33:12 -04:00
Dockerfile feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
index.html feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
nginx.conf feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
README.md feat: Criminal Minds Across the Eras episode explorer 2026-08-16 03:00:46 -04:00
styles.css refactor: shared app.js with episode-axis chart support (no behavior change here) 2026-08-16 03:33:12 -04:00

goat-gideon 🐐

Criminal Minds Across the Eras — an episode explorer for rewatches. Live at https://criminal-minds.inevitable.fyi

A static, no-build rewatch companion, sibling of moose-and-squirrel (the Supernatural one). An interactive era chart (showrunners, network/format, BAU roster, major arcs, serial-arc UnSubs, recurring characters) sits on top of all 364 episodes — the CBS run and Evolution — and everything on it is a filter.

Run

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

Features

  • Interactive era chart. Click to filter; shift-click to combine.
  • Filters: seasons, curated "vibes" (serial-arc episodes, two-parters, gut-punches, extra disturbing, team-member-in-danger, milestones, character spotlights…), guest character (from TVmaze guest-cast credits), min rating, sort, watched state.
  • Full-text search across title, summary, and guest cast.
  • Episode modal with "what's going on this season" context, guest cast, next-episode nav.
  • Watched tracking (localStorage), 🎲 Surprise me, shareable filter URLs, mobile filter drawer.

Data

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

Deploy

Container: ghcr.io/jhgaylor/goat-gideon (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 the URL above.

Analytics

PostHog (project "criminal-minds.inevitable.fyi", US cloud). Autocapture off; pageviews plus explicit explorer events.