Box Out · Written down

The public NBA pages

Written: 2026-10-01 (Job BJ), the declarations first and the code after. Status: built 2026-10-01. Everything under "Declared" was written into this file and committed before the code was written and before any figure on the pages was read; anything added after is marked "added".

Four pages anyone may read, signed in or not, with no league: the NBA's schedule in ordinary weeks, who rests, each team's pace, and who has historically taken a starter's minutes when he sits. They are the NBA's facts and nothing else: no league, no team of anybody's, no member, no account. Every figure on them describes what is scheduled or what was played, with the sample behind it. Nothing on them predicts a night, ranks a man for a move or tells anyone what to do. A tool, not gospel.

Why (the owner, 2026-10-01)

The site should be found when people search for fantasy basketball. The broad search belongs to the big sites; the searches a small site can answer are specific and weekly: the NBA schedule this week, back-to-backs this week, a load management tracker, NBA team pace. Each page answers one.

Declared

The pages

Address Title (the search it answers)
/nba/schedule NBA schedule this week for fantasy basketball: games, back-to-backs, light nights
/nba/rest NBA rest tracker: load management and back-to-back nights off
/nba/pace NBA team pace for fantasy basketball: possessions per game, last 15 games
/nba/minutes When an NBA starter sits: who takes his minutes, team by team

/nba goes to /nba/schedule (a 307, by a path, never a full address).

Each page has its own title, description, canonical address and share card words, is in the sitemap, is allowed in robots.txt, is linked from the landing page's foot and from the other three, and ends with one quiet line: "See this for your own league: connect it", to League connection (which asks a signed-out reader to sign in first and comes back).

What they read, and what they never read

Only the NBA-wide tables: the schedule (pro_team_games), box scores (player_game_stats), the NBA's official injury reports (injury_reports), a man's season position (player_season_stats), his NBA team from ESPN's status reads (player_status_snapshots, the team alone) and his name and date of birth (players). Never a league, a league season, a fantasy team, a roster, a matchup, a member, an account or anything typed by anybody. One exception, said here: the schedule grid's calendar (season_calendar) clamps a played season to the last fantasy matchup day stored; these pages do not use that clamp and date the days themselves.

The season and the day

Schedule (/nba/schedule)

The grid's counting, unchanged (app/inseason/nba_schedule.py, docs/schedule_grid.md): a back-to-back is a team playing two days in a row, counted on its second night; a light night is a day with LIGHT_NIGHT_MAX_GAMES (5) or fewer games; the week's usual is the median of the 30 teams' games that week, the lower middle; a cell's shade is the same three steps against it.

Rest (/nba/rest)

The rest tracker's rules, unchanged (app/inseason/rest.py, docs/rest_tracker.md): the same regular (5 or more games for the team, 10.0 or more minutes over his last up to 10), the same classes (the NBA's official report where a season has one, else the declared rule: sat the second night of a back-to-back, having played the first night and his team's next game), the same sample after every rate.

Pace (/nba/pace)

The team context study's measure (app/inseason/pace.py):

When a starter sits (/nba/minutes)

The minutes study's share rule M1, refitted on all five seasons (REFIT_SHARES in app/inseason/minutes_bump.py, the "minutes may rise" label's rule): a teammate gains the absent man's recent minutes times one of six shares, by how their positions meet (same group, adjacent, far) and whether the teammate starts.

Server-rendered, cached daily

Look

The landing page's house style for plain pages: its bar (with the four pages as its links, the page in view underlined in orange), its masthead, its section rules; tables at the workstation's metrics on a panel that scrolls inside itself at 390 wide. Light and dark from the tokens. No new colour, no new pattern.

Found (added 2026-10-01, after the build)

Read on a pg_dump copy of the local database on Thu, Oct 1, 2026, before the 2026-27 season: every page is in its pre-season form.

The examples in the sitemap, and the redirects (declared)

Code and routes

app/nba_public.py (the figures), app/api/nba.py (the routes, the rendered HTML and the cache), app/api/static/nba.html (the page around them). Tests: tests/test_nba_public.py.