What's new on the bbstats.am platform.
18 Oct 2026
On a phone the standings table was cut after G / W / L, so the column that actually orders the table, P (classification points), was off-screen. Phones now show # / Team / G / W / L / P / +/- without scrolling. An All columns button under the table brings back %, PTS, OPTS, PPG, OPPG and Streak when you want them.
The game log on the player page scrolls sideways on phones, but nothing said so and the first columns scrolled away with the rest. Date and Opponent now stay pinned while the stat columns scroll, and a short “Swipe for more →” cue fades after the first swipe.
On every screen size the log now ends with a Total row (sums, shooting splits and percentages for the games listed) and an Avg row (per-game averages), so the season line is visible without opening another card.
On phones the orange Fan sign-in pill was the most prominent element in the header on every page, although most visitors never sign in. It now lives at the bottom of the hamburger drawer (together with the Coach portal link where that is enabled); the header keeps the league logo, the language switcher and the menu button. Signed-in fans still see their avatar in the bar. Desktop is unchanged.
A finished game with a YouTube link opened on a full-width video, pushing the score breakdown and “How it was won” below the first screen on desktop. The video now sits in a narrower Watch the replay card after the recap, box score or play-by-play. Live and upcoming games keep the stream at the top, where it belongs.
The button on the player page read “Compare”, which did not say what would happen. It now reads Compare with… (also in Russian and Armenian), and the compare page it opens, with that player already filled in, puts the cursor on the second player dropdown so the next step is one tap away.
16 Oct 2026
Rows on the public Calendar showed the league’s name (for example the first season’s title) under every game, even when the game belonged to a newer season or another division. Each row now shows the championship the game is actually scheduled in.
Players without a photo used to share the same initials circle, which made namesakes on different teams hard to tell apart. The list now shows the player’s team crest when there is no photo, on desktop and on phones; initials appear only when the team has no logo either.
The Season Averages and Game Log cards now say which season they describe. A player who has played in more than one season or division gets a season selector next to the header; picking a season reloads the averages and filters the game log, and the choice is kept in the page address so it can be shared.
The page opens on the season of the player’s most recent game.
PIR, true shooting and effective field goal percentage were spread across the card with an empty middle on wide screens. They now sit in three equal tiles matching the points / rebounds / assists row above, with PIR highlighted. The per-36-minutes breakdown stays folded below.
Amateur leagues rarely have player photos. Wherever a player picture appears on the public site, the same fallback now applies: photo → team crest → initials. The crest sits on a dark pad tinted with the team colour where it is known.
The #1 card on each leaderboard now shows the team crest when the player has no photo instead of a large initials box. Rows 2–10 are whole-row links with a chevron, so on a phone it is clear they can be tapped; each opens the player’s page.
The box-score PDF link used to sit on the Recap / Box score / Play-by-play tab row as if it were a fourth tab. It is now a small button in the top-right corner of the game header, next to the status badge (“PDF” on phones). It is not shown for forfeits, which have no box score.
On phones the cookie notice is now one short line with a link to the Cookie Policy and two equal-weight buttons (Necessary only / Accept all). It takes about a tenth of the screen instead of a fifth. The desktop banner is unchanged.
The championship page already showed “2026-2027 · Active”; visitors landing on the home page had no such cue. A pill now sits directly under the hero with the season name and status, one per running season (or the most recent season when nothing is running). It links to the championship page.
12 Oct 2026
On the 1st of the month, every championship that played finished games in the previous month gets an unpublished news draft naming the month’s player. Fans see nothing until an admin adds a photo and publishes it.
Publishing a Player of the Month post creates a Player of the Month award for that championship and month. Unpublishing or deleting the post removes it.
A landscape cover image was cropped into a tall portrait box on phones; it now keeps its own aspect ratio. Embedded YouTube videos, which rendered at the browser’s default 300×150 size, now fill the article width at 16:9 on desktop and mobile.
6 Oct 2026
Live games now have a third scoring screen, marked Court mobile. It is built for a thumb: a large clock, the five shirt numbers on the floor, and a court you tap to mark a 2 or a 3. Classic scoring and the laptop court screen are separate pages and were not changed.
/admin/games-mobile/…/live.3 Oct 2026
Each league now chooses FIBA or NBA game rules. Before a scheduled game starts, the scorer names the players on that game’s scoresheet: up to 12 per team under FIBA, up to 15 per team under NBA. Leagues that have not chosen stay on FIBA.
21 Sept 2026
League admins can connect an Instagram professional account (Business or Creator) and post a news cover to the feed when they publish an article. Guide: Instagram auto-post for basketball league news.
20 Sept 2026
Live scoring now tags a made field goal as a fast break the same way FIBA LiveStats / Genius does: the operator decides, the software does not guess from the clock.
(FB) after the shot type. Edit Event has the same Fast break checkbox if you missed it live.Court scoring now has a team-level TEAM TO next to each roster, matching classic live scoring. Pick the team, then the reason. No player is charged.
The official PDF now prints the Genius extra-stat sheet under both box scores: Points from Turnovers, Points in the Paint, Second Chance, Fast Break, Fast Break from Turnovers, Bench Points, Biggest Lead, Biggest Scoring Run, Points per Possession, Lead Changes, Times Tied, and Time to Lead.
13 Sept 2026
The first YouTube Live release used one reusable OBS key for the whole league. A brief encoder drop then completed that broadcast, and the next Start in OBS opened a new YouTube live — or the next bound fixture — while the game page still embedded the old watch URL.
10 Sept 2026
League admins can sign in with Google and attach the championship YouTube channel. One OAuth app covers the whole platform; each league connects its own channel.
9 Sept 2026
A second Browser Source sits next to the live scoreboard and shows the same team-vs-team bars and top performances as the public game page, updating while the game is live.
The MIN column used to stay at 0:00 until the buzzer. On-court time is now built from substitutions and the running clock, the same way the finished box is rebuilt.
6 Sept 2026
A club that played last year and is signing up again no longer shares one forever list. Each season has its own squad, so dropping someone from next year does not take them off last year’s games.
The public roster used to list everyone ever attached to the club, which mixed last year’s leavers into this year’s page.
The coach roster screen is where next year’s squad actually gets built. When a team is in more than one season, a Season dropdown appears so add, edit and remove apply to the season on screen.
30 Aug 2026
Made baskets can now celebrate the scorer on the OBS Browser Source overlay — a short pop above that team’s side of the bar, without touching the scoreboard itself.
Logging a substitution in live scoring can now play a broadcast-style in/out graphic at the top centre of the overlay.
A player foul can now flash a small rectangular card in the upper corner of that team’s side — home left, away right.
26 Aug 2026
The public player page leads with what fans actually scan first — points, rebounds and assists — instead of a flat row of equal numbers.
Picking a player, team, coach, news or branding image now opens an optional crop before upload. Skip to keep the original.
PG, SG, SF, PF and C on public player lists and profiles use the same hover (and tap) hint as stat abbreviations — so PF is power forward there, not personal fouls.
Searching or browsing Players on a wide screen used to render both the table and the mobile cards. Cards stay hidden on desktop now.
Box scores, player pages and player compare now show a hover (and tap) hint for every stat abbreviation — PPG, RPG, APG, TOPG, PIR, TS% and the rest — in English, Russian and Armenian.
A finished game page is a story first, then the numbers.
Mark a championship completed and 1st / 2nd / 3rd place team medals are created automatically.
The Awards page is a dropdown of completed championships — no mixed “All championships” list, and seasons that have not finished stay out of the menu.
The Leaders dropdown includes in-progress and finished championships. Upcoming seasons (not started yet) stay out. The page opens on a real board instead of an empty “pick a championship” prompt.
On a championship page, the tab row wraps so Awards is tappable. In the Games table, status sits under the date and team names use abbreviations so the row no longer spills off the screen.
24 Aug 2026
The Playoffs page is a tournament tree now, not a stack of series cards.
18 Aug 2026
A dedicated page that explains what bbstats is for organizers searching for basketball league software.
Search engines now get a clearer picture of the marketing site and stop indexing empty shells.
12 Aug 2026
Each league can publish a public Partners page with sponsor logos and links.
7 Aug 2026
Leagues can open a public Coach portal so club coaches self-serve youth registration.
A step-by-step product tour for youth seasons, divisions and coaches.
2 Aug 2026
Head coaches are first-class people, not just a text field on the team.
Game-day attendance goes beyond fan Going / Maybe / Not going.
League staff can message a team’s managers and keep an audit trail in the admin app.
Require liability / consent acknowledgements before paid or free team and player registration.
Cross-game suspensions that affect eligibility, not only in-game fouled-out.
Public SEO pages that position bbstats against common league platforms.
29 Jul 2026
Leagues can publish one-way announcements to team followers, and fans who follow a side can RSVP on upcoming games.
Enter a final score without running live play-by-play — useful for games scored offline or reported after the fact.
The schedule generator can pack fixtures onto chosen weekdays, multiple tip-off times, and multiple venues without double-booking a court.
Each game can run a real FIBA-style shot clock on arena TVs, separate from live scoring.
28 Jul 2026
Leagues can collect team and player registration fees on their public site — payments go through the bbstats merchant account (Paddle), with an adjustable platform fee recorded on each invoice.
Admins can generate a full regular-season fixture list in one pass from Games → Generate schedule — hand-creating games one-by-one still works as before.
Public league sites (and bbstats.am) can be installed on a phone’s home screen like a native app — full-screen, with the league’s name and branding.
Keep your own club site and still show live league data — copy a one-line script from Branding → Website embeds, or call the public JSON API.
Try the product without signing up at demo.bbstats.am — a shared sample league with live scoring you can explore.
Demo data resets on a schedule so the site stays ready for the next visitor.
The platform homepage now walks through the product with real screenshots — not mockups:
Each stop has a short plain-language explanation so visitors can see how a league runs day to day before they sign up.
bbstats.am now surfaces a visible FAQ covering plans, live scoring, multi-championship leagues and public pages, with matching structured data for search engines.
New tenant dashboards open with a short onboarding checklist that tracks the first setup steps — branding, teams, venues, staff and the first game.
Progress updates as you go, and you can dismiss the checklist once the league is ready to run.
Admin and stats accounts now keep a single active sign-in. Logging in on another device ends the previous session immediately (API and live-scoring sockets), so shared credentials cannot stay open on two machines at once.
If your session was replaced, you are sent back to login with a clear notice to sign in again.
31 May 2026
A new **Streaming overlay (OBS)** section in Branding lets you design how the scoreboard looks without touching code:
Every game row in the admin Games list now has a **Copy overlay** button next to **Score**, so you can grab the OBS Browser Source URL for that fixture in one click before going live.
28 May 2026
A single league site can now run several championships at once instead of being locked to one.
Teams now carry an explicit championship assignment, editable from the admin Teams view. When you create a game, only the teams belonging to the selected championship are offered, which prevents accidentally scheduling a cross-competition fixture.
The court-view live scorer can now open and correct the play-by-play feed without leaving the court, so a mis-logged bucket or rebound can be fixed in place mid-game.
The selector dropdowns used across the admin (championship, team and player pickers) were restyled for clearer, more consistent menus.
24 May 2026
The admin now defaults to the most relevant championship (the active one) when you open Games and related views, instead of forcing you to pick every time.
Several edge cases in the foul-logging flow were corrected so the foul type, free-throw awards and resulting game state stay consistent.
21 May 2026
A brand-new **Court** scoring mode lets the scorekeeper record shots by tapping their exact location on a to-scale half-court instead of using buttons alone.
A new game-stats screen turns the shot coordinates from Court mode into visual analytics:
19 May 2026
The Branding section now includes a QR code that points to your public site, ready to print on posters, programmes and signage so fans can jump straight to live scores.
The generated QR code is fully customizable from Branding:
18 May 2026
After a missed shot that is immediately put back, the live scorer offers a one-tap **tip-in** so the offensive rebound and the made basket are recorded together in the correct sequence.
Blocked 2-point attempts are now captured properly: the block is credited to the defender, the attempt is logged as a miss, and the live rebound flow continues as expected.
A batch of smaller live-scoring corrections from May 17 covering event sequencing and game-state consistency.
13 May 2026
Games can now be set to 8-, 10- or 12-minute quarters, so the same platform handles youth, club and senior formats without hard-coded period lengths.
When a player fouls out, the live scorer now requires a substitute before play resumes, and foul counts (personal and team) are tallied correctly through that flow.
12 May 2026
Admins can now clean up duplicate player records created across games or imports.
Fixed the player search used by the import and merge flows so partial-name lookups return the expected matches.
11 May 2026
Standings are now sorted with the standard FIBA league criteria:
Logging an unsportsmanlike foul now applies the correct free throws plus possession outcome and updates personal/team foul counts consistently.
8 May 2026
Admins can now turn a finished game generated by GENIUS into a played-game record without re-typing anything.
FIBA Box Scores display each player's on-court time rounded to whole seconds, so summing them can drift by 1–2 s vs. the canonical Totals row (e.g. 240:01 for a 4×12 game). The importer now snaps player seconds to the Totals row when the drift is small (≤5 s) by absorbing the delta into the longest-played active player; larger drifts surface as a warning on the review screen.
7 May 2026
Refreshed front-door experience for fans landing on a tenant subdomain:
Every finished game now exposes a **Download PDF** button on its public page. The export contains the full box score, quarter scores, and play-by-play with FIBA-style team-rebound footers — same renderer used by the admin export.
Each league can attach Instagram, Facebook, X (Twitter), YouTube, Telegram, and TikTok URLs in **Branding** (admin → Branding → Social media).
On **News** (admin), a Clone action duplicates an article as a new draft (title prefixed with "Copy of …"), preserving cover image, body HTML, and category. Slug is auto-regenerated; published flag flips to `false`.
Each scheduled game now has a **Reschedule** button that opens a date/time picker without leaving the list. Saves immediately; live admins on other devices see the change via the standard `game:updated` socket event.
5 May 2026
Recording a turnover now asks for the type — **bad pass** vs **lost ball** vs other. The play-by-play line and the boxscore filter (`turnovers by type`) reflect the choice.
Logging a shooting foul prompts for the shooter, the foul shots awarded (1/2/3), and which attempts were made/missed — with rebound capture on the last miss when the play stays live.
The arrow flips on jump-ball outcomes and dead-ball possessions. Visible on the live admin scoreboard *and* the public game page; included in PDF exports.
3 May 2026
Per-game **team rebounds** are now first-class:
2 May 2026
Several edge cases around starting and resuming the clock — off-by-one second drift after a pause-resume cycle, occasional double-tick on socket reconnect — have been fixed. Admin live-scoring sockets now refresh their JWT before emitting events when the access token is near expiry, so a long live-scoring session can't time out mid-game.
A scheduled job now flips championships between **upcoming → active → finished** based on `startDate` / `endDate`. Available both as an in-process timer (default) and a one-shot script for OS-level cron (`npm run championship-status-sweep`) when operators prefer external scheduling.
19 Apr 2026
Wildcard subdomains *.bbstats.am for new leagues/championships
19 Apr 2026
19 Apr 2026
19 Apr 2026
19 Apr 2026
The homepage hero CTA on bbstats.am now links to `/start` instead of opening a `mailto:` — the platform is officially self-serve.
19 Apr 2026
19 Apr 2026
19 Apr 2026
19 Apr 2026
The collapsed/expanded sidebar logo, browser tab title and favicon now follow the platform/tenant brand instead of a hardcoded image.
19 Apr 2026
19 Apr 2026
In the super-admin tenant list, the Open button now opens the custom domain when verified, falling back to the subdomain otherwise.
Service workers register per origin, so each tenant host has its own push subscription and notifications. No cross-tenant noise.
Added PUT /api/auth/me and a "My account" modal in the admin app so super-admins (who don't belong to any tenant) can update their password.
Public rules view falls back to platform defaults until the tenant admin saves their first version.
publicAuthenticate now verifies that a user's championship matches the request's resolved tenant; pasted tokens from another tenant return 403.
19 Apr 2026
Public site applies the tenant theme at boot — before the first paint — so users never see a flash of unstyled content.
Branding editor offers a curated catalog of Google Fonts. Selected families are loaded only on the tenant's own host.
Tenant admins can download a ZIP with their JSON data and uploaded images via /api/tenant/export.
Clone a championship to start a new season carrying over teams and players.
Suspended tenants show a maintenance splash on their public site and reject API writes.
New PlatformNews model + dedicated landing site at bbstats.am with platform-only news, completely isolated from any championship.
This page! Super-admins can author release notes (added / changed / fixed / removed / security).
New tenant admin password and "My account" password change include a secure 16-char generator and copy-to-clipboard.