CreaTech
← Back to work
Client · Full digital estate

GlitterBeam

Radio on every screen

GlitterBeam is a Multiregional radio station, and this was the whole estate: the UK and Italian websites, native apps for iPhone and Android, in-car experiences for CarPlay and Android Auto, and a Fire TV app, with Apple TV on the way. Every platform is genuinely native to its home (a headless Next.js frontend on the web, SwiftUI on iOS, Kotlin and Jetpack Compose on Android and Fire TV) yet they all share one live backend and one neon, synthwave-tinged identity. A single codebase serves both stations on each platform, so GlitterBeam UK and GlitterBeam Italia stay in step without maintaining two of everything. It was, quite simply, a joy to build: a brand with real character and a client who trusted the craft.

The brief was reach without compromise: one brand that shows up wherever people listen (at the desk, in a pocket, in the car, in the living room) across two countries, and feels genuinely native on each. Not a stretched-thin web wrapper but a complete, credible product. A single codebase per platform, serving both stations, keeps the cost of running two countries low and future features cheap to ship, so GlitterBeam launches as a coherent whole rather than a website with an app bolted on.

Next.js 15SwiftUIKotlinJetpack ComposeMedia3WordPress REST
The GlitterBeam UK homepage: a “Music with Sparkle” hero beside the rainbow G mark, with a live player bar across the foot of the page.
My role

Stack & architecture

I built the whole estate end to end: a headless Next.js frontend for the UK and Italia sites, native SwiftUI on iOS, Kotlin and Jetpack Compose on Android and Fire TV, all sharing one live backend. A single codebase per platform serves both stations, with language, timezone, streams, branding and even the localised URLs switching from one setting.

Native on every platform

Each surface is native to its home rather than ported: CarPlay and Android Auto for the car, a 10-foot D-pad interface on Fire TV that reuses the Android core, and lock-screen and background-audio behaviour that matches what listeners expect on each OS.

Audio engine & polish

One audio engine per app drives live streaming and podcast playback, handling interruptions, headphones, calls and hand-off to car and TV. Podcast files that only live inside the web player’s markup are resolved on demand, so episodes play everywhere the station does.

What I built

Every screen, one brand

Websites for the UK and Italia, native iOS and Android apps, CarPlay and Android Auto for the car, and a Fire TV app for the living room, with Apple TV in progress. Each is built native to its platform, so it feels right at home rather than ported.

Two stations, one codebase

GlitterBeam UK and GlitterBeam Italia run from a single codebase per platform: language, timezone, streams, branding and even the localised URLs all switch from one setting. New features land on both stations at once.

Radio that behaves like radio

One audio engine per app drives live streaming and podcast playback with proper background audio, lock-screen controls, and hand-off to the car and TV. Calls, headphones and interruptions are all handled the way listeners expect.

Across the estate

On the web

The GlitterBeam Italia homepage, in Italian, with the tricolour-tinted wordmark and an Italian navigation: Palinsesto, Conduttori, Notizie.
The same build serves Italia: language, streams, branding and even the localised URLs all switch from one setting. The site up top is the UK; this is the Italian station.

In your pocket

The GlitterBeam iOS app’s Listen screen: circular station artwork ringed by an orbiting arc, with the current show and a play button below.
iOS home. The ArcRing orbits while the stream plays.
The iOS Schedule screen, listing the day’s shows with their times.
The schedule, where a show running 22:00 to 01:00 still reads as on-air after midnight.
The GlitterBeam Android app’s player screen, showing the station artwork and playback controls.
Android, in Kotlin and Compose, against the same live backend.

In the car, and on the big screen

The CarPlay now-playing list showing two stations: GlitterBeam Radio, “Broadcasting live · 24/7”, above GlitterBeam Italia, “In diretta · 24/7”.
Both stations, side by side in the car: “Broadcasting live” above “In diretta”. One codebase, two countries.
The Fire TV browse screen, a 10-foot interface with a focus glow on the selected card.
Fire TV reuses the whole Android core and rebuilds only the 10-foot, D-pad interface.
Design & craft

Palette

Neon Pink#FF0080
Electric Blue#00CFFF
Live Teal#22E3A0
Ink#0A0A0C

Typography

A chunky, arcade-styled display face carries show titles and the wordmark; a clean sans handles body and interface; a pixel mono is reserved for the broadcast labels (BROADCASTING LIVE, 24/7), grounding the neon in a retro-radio signal.

Signature details

  • The rainbow G mark and a synthwave grid-floor horizon carry across web, phone, car and TV, so every surface reads as one station.
  • A pixel-mono broadcast tag (BROADCASTING LIVE · 24/7) is the one constant chrome, present on every screen.
  • Now-playing artwork falls back to the station’s own show art via a no-track-art mode: clean, on-brand and copyright-safe.
  • One neon identity flexes per country: the UK wordmark and the tricolour-tinted Italia lockup share the same system.
Engineering highlights
  • Podcast audio isn’t in the radio station’s API: the MP3s live on cloud storage and only appear inside the web player’s markup. The apps resolve each episode’s real file on demand, carefully picking the right track out of a page that lists several.
  • Radio schedules wrap past midnight: a show can run 22:00 to 01:00. “What’s on now” has to treat that slot as still live after midnight, which naive time logic gets wrong.
  • Fire TV reuses the entire Android core and rebuilds only the 10-foot, D-pad interface, a UI port rather than a rewrite, so both apps stay in sync from one shared engine.
  • The original Android release signing key had been lost. The update was only shippable because Google Play App Signing was switched on, a good reminder that the recovery plan matters as much as the release.

Like what you see?

I’m available for freelance work. Let’s build something together.