Data & mapping

Every number in Repostream is traceable. Here is where each field comes from, how it is derived, and where it shows up.

Sources
  • GitHub REST API
  • OSSInsight
  • Snapshot store
Ingest & normalize
  • Match repos
  • Diff snapshots
  • Derived fields
Cache / API
  • Period aggregates
  • Rank table
  • Sparkline series
Portal views
  • Trending
  • Languages
  • Watchlist
  • Detail modal
Filter by source:
FieldSourceHow it's derivedWhere it's used
owner/nameSplit from full_name on the repository object
listspotlightdetailwatchlistlinks
descRepository description, verbatim
listspotlightdetail
langPrimary language + GitHub language color
listfilterLanguages pagedetail
starsstargazers_count
list numssort:totaldetail
forksforks_count
list numsdetail
g.day / g.week / g.monthstars_now − stars_at(period_start) via snapshot diff (OSSInsight fallback)
momentum barsspotlight numbermetricssort:velocityLanguages
spark[]Daily star totals over the recent window, normalised to 0–100
sparklinesdetail chart
prev (rank & Δrank)Rank repos by stars gained per period; store last period's rank for the delta
rank chipssort:movementwas #N
new-entry flagTrue when prev is null: no rank recorded for the previous period
NEW chipmetrics
  • GET /search/repositories?q=stars:>500 pushed:>{date}&sort=stars
  • GET /repos/{owner}/{repo}

Authoritative for totals and metadata, but has NO time-windowed “stars gained” field; search is rate-limited.

  • /trending
  • star-history endpoints

Provides growth figures plus the historical series behind every sparkline.

  • PostgreSQL table star_snapshots
  • daily capture { repo, stargazers_count, captured_at }

Most reliable basis for velocity and rank-movement diffing.

  • computed in the ingest job by diffing snapshots

Never fetched directly; recomputed whenever a new snapshot lands.

Fallback behaviour: when snapshots have not accumulated yet, or the network is unavailable, the portal renders the bundled seed dataset so every view stays usable.