Skip to content
Creative Nomad DesignCREATIVE NOMAD
← All work
01Personal product

Tempo Tunes

Set a tempo, pick your genres, and get a playlist that locks to your pace. Or give it a shape: rise, peak, or fade. Built on 1.4+ million verified tracks and growing every minute, live on the App Store and Google Play.

⤢ enlarge
Shape a Bell curve, open the finished playlist, shelve it with the rest. Three screens from version 1.1.▤ Image
Client
Personal product
Role
Design + build + ship
Year
2026
Platforms
iOS · Android · Web
Stack
React Native · Expo
Stores
App Store · Google Play
01The challenge

Music has a tempo. So does everything you do. I ride mountain bikes and snowboard, and I wanted music that matches the pace of the ride. Every workout playlist I tried drifted all over the tempo map, one song at 165 BPM, the next at 92, and the flow died with it. So I built Tempo Tunes: set a BPM, pick the genres you actually like, and get a playlist where every song matches it.

The app was the easy part. The data was the real project. Public BPM sources are a mess: half-time and double-time confusion, dead APIs, licensing walls. And in November 2024, Spotify deprecated the Audio Features API, the tempo data every BPM app leaned on. Most people would have stopped there. I decided to stop depending on someone else's tempo data instead.

So Tempo Tunes runs on its own database. 1.4+ million tracks with verified BPM across more than 90 genres, built through seeding and crowd-sourced uploads, re-analyzed on a nightly pipeline, and growing every minute. And shipping it meant really shipping it. I registered as an Apple and a Google Play developer, took the app through both review processes, and put it in both stores.

02The approach
01

Own the data

The BPM database is the product's spine. Tracks come in through seeding and crowd-sourced uploads, land in SQLite with a verified, cross-checked tempo, get re-analyzed on a nightly pipeline, and resolve to your streaming service when a playlist is built. 1.4+ million tracks now, growing every minute without me touching it, and no third party can switch it off.

02

One app, three surfaces

One monorepo holds the Expo app for iOS and Android, the Next.js site at tempo-tunes.com, and the Express API that serves them both. Mobile is the source of truth for interaction patterns and web follows it. I run a standing parity audit against that rule. The last one logged 62 findings, each citing file and line on both sides, and they get burned down in waves.

03

A tape deck, on purpose

Every playlist you make lands on your shelf drawn as a cassette. Spines with handwritten labels, a full-screen view with a deck and a preview player, and a Tempo-Heat tag that tells you how hot the mix runs. Your history stays on your device, and when a playlist is ready to travel it saves straight to Apple Music, Tidal, or YouTube Music. Spotify saving is built and waiting in invite-only beta: their rules ask for 250,000 monthly users before an app can open it to everyone, so every download gets us closer.

04

Shipping is the feature

Store listings and keywords, Apple's privacy nutrition labels, Play's data safety form, a delete-account flow that works inside the app, review notes with a test account. Every detail got the same care as the UI, because all of it is the product. Both stores approved it, and version 1.1.1 is what you can download today.

03Design System

The whole app is styled after old school cassettes, J-card inserts and all, in a throwback brown-and-gold palette borrowed from the classic San Diego Padres. Everything touchable is yellow. Data that should feel energetic runs ember orange. And BPM itself gets a color scale, so tempo reads at a glance from cool blue at 60 to magenta past 190.

Righteous carries the two-tone wordmark, and the wave logo literally does the wave while a playlist builds. The cassette labels are cream with handwritten names, borrowed from the mixtape era on purpose.

TokenValueUse
accent#FFC72CGolden yellow. Buttons, tabs, anything touchable
accentHot#FF6B35Ember orange. In-range BPM and live data
accentElectric#F5FF00The raw CND yellow, saved for small moments
bg#0a0a0aNear-black app ground
tempo heat60 → 190+Blue to teal to gold to orange to red to magenta
04Motion vocabulary

The shape of a ride

New in 1.1: a playlist has a shape, not just a number. Steady holds one tempo. Rise builds the whole way. Bell climbs to a peak and comes back down. Fade lands soft at the end of the day. Pick a chip and a Tempo-Heat gradient draws the path from start to finish before you commit.

The winding moment

Generating a playlist takes a few seconds, so the app makes it a moment. A cassette winds on screen with an ember glow while the playlist's label writes itself letter by letter, and the modal holds for five seconds minimum so the payoff always lands. Then it drops you inside the finished playlist.

Tempo-Heat

BPM maps to color across the whole app. The 60s run blue, the 130s go gold, the 150s burn orange, and 190 and up goes magenta. In a track list you can read the pace of a mix before you read a single title.

Listen for it

The BPM tab listens through the mic for a few seconds, names the song that is playing, and hands you its tempo. Search 7.5 million measured songs, or upload one of your own and two estimators check each other before the app calls the number verified. And every result ends the same way: one tap makes a playlist from that jam, with its tempo as the target.

05Selected work
01

Make

A target tempo with a tolerance control, strict or looser, a curve chip to shape the whole playlist, and an Obscure to Popular slider for deep cuts vs. hits. Genres sit on nine family shelves with live counts pulled from the catalog, plus an era filter. More than 90 genres deep, and not just the usual suspects. Tejano, chanson, anime, christmas. If a genre exists, I want it in there.

02

The shelf

Playlists live as cassette spines on a shelf. Tap one and it opens full screen with a deck, a preview player with a crossfade Mix mode, and every track's BPM colored in or out of range. No playlist is ever final: cut any track, let Refill top it back up with fresh matches, or Remix the whole recipe. Then listen straight through in the app, or save it to Apple Music, Tidal, or YouTube Music in one tap.

03

Nothing about you

An account is an email, or a Google or Apple sign-in, and that is all the app asks for. No ads, no tracking, no data sales. Playlist history stays on the device, and Delete Account sits right in the profile tab and actually deletes.

06Captures
⤢ enlarge
The Google Play feature graphic. 1.4+ million tempo-verified tracks, growing every minute.▤ Image

Pick a pace, or a shape

⤢ enlarge
The Make tab. Set a target tempo, give it a tolerance, and every song holds the pace.▤ Image
⤢ enlarge
Rise. Start at 90, end at 160, and the playlist climbs the whole way there.▤ Image
⤢ enlarge
Bell. Build to a peak mid-playlist, then ease it back down.▤ Image
⤢ enlarge
Fade. Start hot and land soft as the tempo cools from 150 to 80.▤ Image

Make a playlist

⤢ enlarge
Nine genre family shelves with live counts from the catalog, plus an era filter for decade loyalists.▤ Image
⤢ enlarge
Name the playlist or let it name itself, then one tap on Generate starts the deck winding.▤ Image
⤢ enlarge
Inside a finished playlist. Every track tempo-verified, with BPM colored by Tempo-Heat.▤ Image

Shelve it, save it, tap the tempo

⤢ enlarge
The shelf. Every playlist is a cassette spine with a handwritten label and a Tempo-Heat tag.▤ Image
⤢ enlarge
Save a playlist to Apple Music, Tidal, or YouTube Music. Spotify waits in invite-only beta behind their 250k user gate.▤ Image
⤢ enlarge
The BPM tab. Mic the song playing, search 7.5 million measured tracks, or upload your own. One tap makes a playlist from that jam.▤ Image
⤢ enlarge
The mic names Scarlet Begonias at 82 BPM. From there, one tap builds a playlist at that pace, by genre or by artist.▤ Image
07Before / After

Every BPM app used to stand on one Spotify endpoint. This one stands on its own data, and it went all the way through both store fronts.

Tempo data
Before

Spotify's Audio Features API, deprecated for new apps

After

An owned database, 1.4+ million verified tracks and growing

Finding your pace
Before

Google a list of 170 BPM songs and hope

After

A slider, four tempo curves, 90+ genres, and a verified tracklist

Distribution
Before

A web demo on a URL

After

Signed builds live on the App Store and Google Play

08Outcome

Live in both stores and on the web, built by one designer pairing with AI agents. The catalog keeps growing every night, and the reviews that matter most so far came from Apple and Google.

2

App stores approved and live

1.4M+

Tempo-verified tracks in an owned database, growing every minute

90+

Genres on the shelves

3

Surfaces in one monorepo: iOS, Android, web

62

Findings in one mobile to web parity audit

0

Ads, trackers, or data sales

What I owned

All of it. Product, brand, and UI. The cassette design language, the tempo database and the API behind it, the React Native app, the Next.js site, and the Express backend, built with agentic AI on a designer-coder foundation. Both store listings, both reviews, both launches.

Next case — 02

Fortris Command

Want something like this?

Start a conversation