StatsHub Docs

Matches

Fixtures and live scores across 120+ competitions, the calendar behind it, and the fixture cards you can configure.

src/app/(main)/(tabs)/matches · src/app/(main)/home/matches.tsx

Today's fixtures and live scores. The tab most sessions start in, and the one that has to be right at 15:00 on a Saturday.

The day is the state

The calendar strip drives everything. src/lib/core/calendar-date.ts owns the arithmetic and is tested without a render — days, weeks, and the boundaries that go wrong around a timezone.

Two related screens sit under (tools): calendar and calendar-fixtures, for picking a date further out than the strip reaches.

Cards are configurable

board-card-settings/[board] lets you choose what a fixture card shows. That is not decoration: on a phone a card is the whole row, and someone tracking corners wants different numbers on it from someone tracking cards.

The settings are client state, so they live in a zustand store — see Data.

Pinned leagues

src/lib/core/pinned-leagues.tsx and league-order.ts decide what comes first. 120+ competitions is unusable without it, and the ordering is a preference the reader sets, not a ranking the app imposes.

Live scores

A fixture in progress updates while the screen is open. Anything that polls is a query with a short staleTime, not a subscription — see Data for the defineQuery primitive and where staleness is declared.

On this page