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

Tempo Tunes

Tempo Tunes logo and wordmark

Pick a tempo and get a playlist that locks to your pace. Or let the app find the tempo for you. Run works it out from a race goal, Golf from your swing, and Ride from a trail you already rode. Built on 2.1+ million verified tracks, growing every minute, and live on the App Store and Google Play.

⤢ enlarge
A Bell curve on the Tempo, Run, Golf, Ride switch, a mountain bike ride drawn as tempo, and the shelf. Three screens from version 1.3.▤ Image
Client
Personal product
Role
Design + build + ship
Year
2026
Platforms
iOS · Android · Web · Watch
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. Then I kept going. Runners wanted a tempo from a goal time, golfers wanted one from their swing, and I wanted the music to follow the trail. Now there are four ways in: Tempo, Run, Golf, and Ride.

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. 2.1+ 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. 2.1+ million tracks now, growing every minute without me touching it, and no third party can switch it off.

02

One app, every surface

One monorepo holds the Expo app for iOS and Android, the watch apps for Apple Watch and Wear OS, the Next.js site at tempo-tunes.com, and the Express API that serves them all. 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 shelf follows your account to every 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 it keeps shipping. Run, Golf, Ride, the watch apps, and a new logo all came in updates after launch.

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.

The new mark is two T's under one wave, orange running into yellow on a dark tile. The wave travels once when the app opens, loops while a playlist builds, then settles. The shape moves through the color and the color never moves, so every frame is a valid logo. Righteous carries the two-tone wordmark, and 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

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 trail, drawn

Load a ride and the app draws its elevation as a strip, each stretch tinted by terrain. Climbs run orange, descents run yellow, cruising stays gray, and every band is labeled with the tempo it will play at. Drag any of them. The music changes where the trail does.

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

Tap along to the beat and the BPM tab counts it. Or let it listen through the mic for a few seconds, and it 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. New: Sounds like, where you pick up to five seed songs and the whole mix leans toward their sound. 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

Run

Enter a distance and a goal time and the app works out your pace, your steps per minute, and the BPM that matches your stride. Add your height and it tunes the cadence to you. Or start from a run you already recorded. A .fit from Garmin or a .gpx from Strava fills in distance, time, and your measured cadence, and the playlist is sized to outlast the run.

03

Golf

A good swing runs about three to one, backswing to downswing. Pick a preset, Quick, Tour, or Smooth, or find your own. Hold your phone like a club, film your swing and let the camera watch, or let an Apple Watch or Wear OS watch count it on your wrist. Already timed by a Garmin or another swing trainer? Type in the two times. The playlist is built so impact lands on the beat, for full swings or putting.

04

Ride

I ride mountain bikes, so this one is personal. Load a ride you recorded, a .fit, .gpx, .tcx, or Garmin's zip, and the playlist changes tempo where the trail does. Climbs, descents, and cruising each get their own BPM, drawn right on the ride's elevation. Play it at the trailhead and the music turns with the terrain.

05

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.

06

Nothing about you

An account is an email, or a Google or Apple sign-in, and that is all the app asks for. Your playlists and settings follow it from phone to tablet to tempo-tunes.com. No ads, no tracking, no data sales. Delete Account sits right in the profile tab and actually deletes.

06Captures
⤢ enlarge
The Google Play feature graphic with the new logo. Tempo, Run, Golf, and Bike, on 2 million tempo-verified songs.▤ Image
⤢ enlarge
The mark. Two T's under one wave, orange running into yellow. In the app the wave travels, then settles.▤ Image

— Four ways in

⤢ enlarge
Tempo. Set the BPM yourself, or shape it. Bell climbs from 85 to a 140 peak and lands soft.▤ Image
⤢ enlarge
Run. Pick a distance and a goal time, or start from a run you recorded on Garmin or Strava.▤ Image
⤢ enlarge
Golf. Full swing or putting. Pick a preset, or let the app find your swing tempo.▤ Image
⤢ enlarge
Ride. Load a ride and its elevation comes back as tempo. 140 on the climb, 168 on the way down.▤ Image

— Make a playlist

⤢ enlarge
Tolerance sets how tight every song holds to the target. Tight for cadence work, loose for variety.▤ Image
⤢ enlarge
Pick up to ten genres or an era. Every family shelf shows live track counts from the catalog.▤ Image
⤢ enlarge
Sounds like, a name, and 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. Tempo, bike, golf, and run playlists, each a cassette spine with a handwritten label.▤ Image
⤢ enlarge
Save to Apple Music, Tidal, or YouTube Music. Spotify opens to everyone at 250k monthly listeners.▤ Image
⤢ enlarge
The BPM tab. Mic the song playing, search 7.5 million measured tracks, or upload your own.▤ Image
⤢ enlarge
The mic names Scarlet Begonias at 82 BPM. 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, 2.1+ million verified tracks and growing

Finding your pace
Before

Google a list of 170 BPM songs and hope

After

Four ways in, 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

2.1M+

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

90+

Genres on the shelves

4

Ways in: Tempo, Run, Golf, and Ride

62

Findings in one mobile to web parity audit

0

Ads, trackers, or data sales

What I owned

All of it. Product, brand, logo, and UI. The cassette design language, the Run, Golf, and Ride tempo engines, 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→