Skip to content
Amplire
Menu
Book a Call

Case Study · Music Streaming / Audio Infrastructure

Keeping a Streaming Catalog Honest Against a Live Radio Feed

An internet radio and music streaming service. We spent two years on its team, owning sync, recommendations and the API contract.

  • 5 recommendation strategies behind one contract
  • 3 health checks that catch catalog drift
  • 2 API versions live at once

The Client

An internet radio and on-demand music streaming service, with mobile and web apps, live channels and a searchable catalog.

The platform was already live and built by a wider team. We joined it and took ownership of three layers inside it.

The Challenge

  • A catalog that mirrors a live feed. Songs vanish upstream, metadata arrives late and links change, all without a sound.
  • Recommendations every week. Listeners expect fresh picks, and the same track twice in a row reads as broken.
  • Apps already in people's pockets. The API had to evolve without breaking the versions installed on phones.
  • Search that groups. The catalog needed grouped results, which the stock search driver could not express.

What We Built

A catalog mirroring a live radio feed drifts by default. We kept it honest, and knew first when it was not.

Live-broadcast sync

Channel-to-playlist sync, removals, audio file sync, metadata backfill, cover art and transcode validation.

Drift alerts

Three health checks catch a silent channel, missing songs or invalid transcodes before a listener reports them.

Weekly recommendations

Five fetch strategies behind one contract, then a uniqueness pass, so nobody gets the same track twice across weeks.

An API contract layer

Data transfer objects and mappers between the database and the API, so a schema change does not become a breaking client change.

A grouped search driver

The search engine driver was extended to return grouped results, instead of every caller post-processing hits.

Counter caches that repair

A recalculation command keeps aggregate counts consistent, repairing drift rather than trusting it.

Technical Highlights

  1. 01

    Recommendations without a model

    Quality comes from composing cheap strategies and removing repeats. Adding a source means adding one fetch service.

  2. 02

    Drift is detected, not reported

    A mirror of a live feed goes stale by default. The health checks raise the alarm first.

  3. 03

    A contract, not an ORM leak

    The mapping layer let a second API version evolve while the first kept serving installed apps.

  4. 04

    Extend the driver, not the caller

    Grouping lives in one small search engine driver, not in every query.

  5. 05

    Tests where the risk is

    Targeted regression tests cover transcode validation, channel sync, search and counter caches.

Results

  • Catalog kept in step with the live radio source, with alerts on drift
  • Two API versions served side by side, so installed apps kept working
  • Weekly recommendations shipped without a recommender model
  • Grouped search results from a single driver
  • Regression tests on the highest-risk sync and search paths
PHP 8.2 Laravel 10 PostgreSQL Redis Horizon Typesense Scout Sanctum Docker S3 FCM Sentry

Need senior ownership inside a platform that is already live?

Sync jobs, search, APIs that must not break installed apps. In 30 minutes we will outline our approach.