Hacker News new | past | comments | ask | show | jobs | submit
I worked at a sports company forever ago, and ever since then, I've wanted to build my own NBA scores + stats site. After a few false starts over the years, I have a new concept called Center Court that I'm so excited about.

It's primary purpose is for live boxscores because all of the major sports sites have terrible UI/UX experiences. I always defaulted to ESPN.com but it's so slow and awful. Center Court is basically a bridge between espn.com (or nba.com) and more advanced stat focused sites that don't offer a good live experience.

The technical implementation behind it is quite novel in this space too. Instead of storing computed statistics in a database, I store raw play by play payloads immutability and everything else is derived from those and can be trivially rebuilt so the event log is a derived cache of the payloads. Every stat on every page is a pure fold over the event log at request time; no derived number is stored.

This enables some powerful features like being able to re-derive a game's entire state at any point of the game (or even a time range). Example game to try out: https://centercourtlive.com/game/0022600197

The site is meant to be extremely fast. It's all server-side rendered with progressive JS enhancements. URLs are immutable and cached behind a CDN.

https://centercourtlive.com/

loading story #50427200
Where do you get your data?
Currently I'm using NBA.com. See https://github.com/swar/nba_api for more details on that (I used it to create my own Rust client).

So far I'm trying to exclusively rely on cdn.nba.com endpoints. There are repos with historical PBP data too if you want to avoid hitting their API. Eg: https://github.com/ramirobentes/nba_pbp_data

If this project becomes more successful then I would look into paying for a real data provider like https://sportradar.com/

loading story #50425952