NHL Excite‑o‑Meter

About the Project

What powers the Excite‑o‑Meter

The frontend is a thin client on top of the nhl-excite-o-meter-be/backend service. Every score on this site comes from the Flask API’s /excitement/<gamePk> and /preview endpoints, which replay the NHL api-web feeds and run them through the shared ExcitementScorer.

  • Live scoring processes the complete play-by-play stream and returns the raw excitement sum, context multipliers, blowout and tilt modifiers, plus tagged highlights/detractors exactly as produced by the backend.
  • Previews reuse the same scorer on each club’s most recent completed games, apply the form multipliers from exciteo/preview.py, and surface high-scoring, chance barrage, hits frenzy, or low-event storylines when the data warrants it.
  • All configuration lives in exciteo/config.py, so the weights, bonuses, and category thresholds documented here mirror the production service.

If you want the math behind those numbers, the backend repository is the source of truth—dive into exciteo/scoring/engine.py and exciteo/utils.py to see how the raw NHL events become the excitement trace the UI renders.

Transparency & collaboration

The project stays intentionally open: scoring constants, decay rates, and storyline logic are versioned alongside the API, and this frontend simply reflects that work. Explore the Methodology for the full breakdown or the Stats Guide for UI-specific definitions.

Frontend integration

Pages like the live game dashboard, previews, and excitement history charts consume the backend JSON shapes directly, which keeps release cadence simple—refresh the backend, redeploy the static site, and the copy here stays in lock-step.