Skip to main content

Live sports platform · League of Basketball

League of Basketball: league management software that ends the courtside score argument

League of Basketball had no system of record. The league management software we built puts one match record on the server, so a scorer, a timekeeper and a fan in the stand never disagree.

How the system works: Courtside action, Server match state, Live broadcast, Staff and fan views
One record, three readers: the scorer tablet, the timekeeper tablet and the fan app each read the server's match state, and none keeps a copy of its own.
Integrations & Custom Systems5 minute readBy Rizwan QaiserRead the case study

Three screens had to agree about the score, live

A basketball game in Karachi runs on two tablets and a phone. One tablet holds the box score, the running tally of points, fouls and rebounds. The other holds the quarter clock. A fan in the stand follows the same match in an app. When those three disagree, the argument happens courtside.

League of Basketball is a Karachi organisation that runs men’s, women’s and varsity competition in Pakistan. A system of record is the one place a fact is allowed to be true, and in August 2023 the league had none. Both server repositories open on blank framework templates. Across 257 commits there is no import script and no adapter for an older system.

Three surfaces, two engineers, one cross-stack change in 24 days
What this build producedFigurePeriod
Product surfaces on one shared match record3Aug 2023 to Jan 2026
Account-deletion change, first commit to merged release24 days10 Sep to 4 Oct 2025
Core engineers who returned after the pause2 of 2Sep 2025
Reverts or rollbacks in backend and app history0Aug 2023 to Jan 2026
Three surfaces, two engineers, one cross-stack change in 24 days

The clock was the part nobody could afford to get wrong

Every figure here is read from the git history of three repositories: the backend, the operator console and the fan app. The first commit lands on 1 August 2023, the last on 7 January 2026.

If you run an operation where two people touch one record while it is changing, you already know this failure. The screens drift apart. Whoever speaks loudest becomes the source of truth.

Three things were true courtside. Scorers mis-enter points and have to take them back. A finished box score should stop being editable. Venue Wi-Fi drops mid quarter.

It is the same problem as an order living in a warehouse tool, a spreadsheet and a customer email at once. The fix is deciding which system is allowed to be right.

The rule to take from this build. Anything two people can change at the same moment belongs on the server, not in a browser tab. The server decides what the state permits.

The server owns the match clock, not the tablet

League management software is the software around a live game: fixtures, teams, players, the score and the result. Autonomous Technologies builds and then runs custom operational systems for the person accountable after launch. Here that meant all three surfaces.

The backend holds leagues, seasons, teams, squads, players and matches. On top of it runs a real-time layer built with Django Channels and Redis, tools for keeping live connections open. One connection stays open per match and pushes every update to every screen watching it. In plain terms, each tablet and each phone reads one clock and one score.

The clock is not a timer ticking in an operator’s browser. The server stores a start time and the elapsed time already banked, then works out what is left. It refuses to start a quarter unless five players a side are marked on court, and it names the team that is short. When a quarter reaches zero it stops itself and moves on.

Two engineers carried this for its whole life. Usama wrote the backend and the scoring engine, 79 of its 96 commits. Saif wrote the fan app in React Native, one codebase for both phone platforms, 110 of 116. Abdullah handled infrastructure and review. The console was built for a real game, not a tidy one. A correction mode pulls a wrongly entered point back out. The match goes read-only at full time. Nobody builds a reconnect button for a network that behaves.

Thirteen months later, the same two engineers shipped across every layer

Then the league went quiet. It paused the project for its own reasons. The backend went nine and a half months without a single commit.

In September 2025 it came back with a request that touched everything. Google and Apple both require an in-app route for a user to delete their account. Meeting that meant a delete path in the API, a new database model, an admin screen, a support email, a settings screen and a release build. Cross-stack, in other words.

That is the real question about an outside engineering team. Not whether they can build it. Whether, a year later, anyone still understands your system. The same two engineers took this from first commit to merged release in 24 days, between 10 September and 4 October 2025. No discovery phase. No rewrite. Eleven months on, none of those files has needed a fix.

The warning here is about us. We reworked the clock in July 2024 and shipped it. A live game exposed a defect within the week. We patched it in days, then never wrote a regression test, the kind that fails when a change breaks what used to work. The engine still has none.

What changed, and what was never measured

Two rows are honest gaps: nothing in this platform ever counted a match or a fan
MeasureBeforeAfterWindow
Where the live score livedwith whoever held the clipboardone server record, three screens read itAug 2023 to Jan 2026
Clock shared by scorer and timekeepernoneone, held and advanced by the serverfrom Jul 2024
In-app account deletionnonehard delete plus a request-and-review path10 Sep to 4 Oct 2025
Seasons, matches and fans reachednot measurednot measuredno analytics was ever installed
Hours saved against manual scorekeepingnot measurednot measurednever instrumented
Two rows are honest gaps: nothing in this platform ever counted a match or a fan

The app is live on Google Play, not on the App Store. The engagement was paid at a discount, because the league is a non-profit. The repositories are the client’s own.

Who this fits, and who should walk away

This fits you if two people arguing about one record costs your team hours of rework, and the record keeps changing while they argue. Courtside scoring, dispatch boards, live stock counts, anything with a clock on it. It is the work behind custom engineering and integrations, and the point of it is fewer hours lost to rework.

Walk away if you need a certified, test-gated, audit-ready process from day one. This build did not have one. The scoring engine has no automated tests. Two of the three front ends have no continuous integration, so no automatic check runs before a change ships.

What we would do differently is write the system down: no runbook and no architecture document exist. Those 24 days worked because Usama and Saif were both still here. Had either left, the client would have paid for a rediscovery project. A written system map and tested critical paths are now scope, not a nice-to-have. That is how we ran the embedded product team for Memox and the long retainer behind The Republic’s bilingual publishing platform.

Rizwan, founder of Autonomous Technologies and the author of this case-study collection.
The rule for these write-ups: the weak parts go in the same document as the strong parts.

Questions and answers

Why keep the clock on the server instead of the tablet?

Because two operator screens and a fan app need one answer. A device asks the server to start or stop. The server decides what time is left.

What happens when the venue Wi-Fi drops mid quarter?

The operator screen shows a connection light and a reconnect button. Staff recover the live view instead of reloading and losing their place.

How many matches has the platform run?

You will not get a number here. No analytics was ever installed in the app, and no usage figure is confirmed. An estimate would be a guess.

What proves the team was still there after the pause?

The commit history. The same two engineers handled a change crossing the API, the database, the admin, email and the app. It went from first commit to merged release in 24 days.

Do you build custom league management software for sports organisations?

Yes. Autonomous Technologies built this one end to end for League of Basketball: a backend for leagues, seasons, teams, squads, players and matches, a courtside console for scoring and timekeeping, and a React Native fan app. All three read one server-owned match record.