FanServ · case study

When failure is public and the load is spiky, discipline is what holds: the rebuilt platform pushed to tens of thousands of devices in under half a minute and kept game state 12× fresher.

The official app of an NBA team, serving hundreds of thousands of fans on game night: we took full technical ownership of the backend, native apps, push pipeline, live feed, and CMS for the agency that owned the product.

live feed refresh
60s 5s 12×
In-app game state went from a minute behind the actual game to five seconds, delivered to devices in real time over WebSockets instead of a 20-second pull.
Recorded during live games; figures as recorded at the time.
push delivery · live games
20–30 seconds
push to tens of thousands of devices
Post-quarter notifications during live games reached every registered device in 20–30 seconds. Previously, some fans got updates late or not at all.
Delivery window observed across live-game pushes after the Celery/APNS2/Firebase pipeline rebuild; as recorded at the time.

We rebuilt the technical platform behind an official NBA team’s fan app for FanServ, the agency that owned the product: backend, native iOS and Android apps, push pipeline, live feed, and CMS. Live feed refresh went from 60 seconds to 5; push notifications reached tens of thousands of devices in 20–30 seconds during games.

The Situation

FanServ, a U.S. digital agency for the sports and entertainment industry, was tasked with redesigning the official app of an NBA team whose app served hundreds of thousands of fans. The existing app ran on outdated core components. Push delivery was unpredictable: some fans got game updates late or not at all, at tens-of-thousands-of-devices scale. The in-app feed lagged the actual game: the league’s legacy FTP/XML pipeline and a 60-second refresh couldn’t keep up. Editors managed content through a raw Django Admin, typing in by hand what league APIs could have automated. FanServ’s product owner and designer led the vision; we owned the complete technical execution: development, project management, and QA.

What We Did

We rebuilt the platform from the ground up under live-event constraints: hundreds of requests per second during games, with any failure visible to tens of thousands of fans in real time. The push pipeline moved to parallel processing across multiple Celery queues with multi-threading, and delivery migrated to APNS2 and Firebase. For the live feed, we replaced the league’s legacy FTP/XML processing with official-API scraping at a tighter interval, and replaced the mobile data pull with WebSockets so devices receive game state as it changes. Around that core: new native iOS and Android apps with a new design and fan-requested features, a new Django backend on AWS built from scratch, and a dedicated Angular management portal replacing the raw Django Admin. One constraint shaped the tail of the project: no staging environment reproduces a real game-night spike, so we treated the first live games as part of the engagement and monitored them end to end.

What Moved

Feed refresh went from 60 seconds to 5, and delivery to devices moved from a 20-second pull to real-time WebSockets. Game state in the app was 12× fresher. Post-quarter push notifications during live games reached all of tens of thousands of devices in 20–30 seconds. Fan engagement improved with the redesigned app and editors were happier with the dedicated CMS; those are qualitative observations from the time, not numbers we recorded.

your system next

If This Sounds Like Your Codebase, start with a call.

A short discovery call scopes the next step, for a system like this one, usually the fixed-price audit: a diagnosis of the code you actually have, from $5K, report in hand before you commit to anything further.

newsletter

Notes on Building High-Quality Software

A short founder’s note and a digest of what we’ve published, sent only when there’s something worth the inbox.

No sequence · Unsubscribe in one click